#c# #google-cloud-pubsub
#c# #google-cloud-pubsub
Вопрос:
В Google.Облако.Версия PubSub.V1 1.x.x, я использовал PublisherServiceApiClient.Создайте и передайте объект «Channel», который был настроен с помощью target, учетных данных и параметров канала. Параметрами канала являются grpc.max_receive_message_length, а затем grpc.max_send_message_length.
Согласно документации (https://googleapis.github.io/google-cloud-dotnet/docs/Google .Облако.PubSub.V1/api/Google.Облако.PubSub.V1.SubscriberServiceApiClient.html#Google_Cloud_PubSub_V1_SubscriberServiceApiClient_Create) вы должны использовать SubscriberServiceApiClientBuilder (если вы не собираетесь использовать значения по умолчанию: https://googleapis.github.io/google-cloud-dotnet/docs/Google .Облако.PubSub.V1/api/Google.Облако.PubSub.V1.SubscriberServiceApiClientBuilder.html ).
SubscriberServiceApiClientBuilder позволяет устанавливать параметры каналов и конечную точку, но я не вижу способа установить параметры каналов. Как мне установить параметры канала в SubscriberServiceApiClientBuilder?
Старый код для создания SubScriberServiceApiClient:
SubscriberServiceApiClient.Create(channel); // channel is of type Channel
Новый код для создания SubscriberServiceApiClient:
new SubscriberServiceApiClientBuilder
{
ChannelCredentials = channelCredentials,
Endpoint = endPoint,
}.Build()
Ответ №1:
Как вы указали, SubscriberServiceApiClient.Create()
перестал принимать grpccore::Channel
объект. Но вы все равно можете создать клиент, создав базовый SubscriberServiceApiClientImpl
объект напрямую.
Чтобы уточнить больше, SubscriberServiceApiClientImpl
принимает Subscriber.SubscriberClient
объект, который является производным от channel
переменной ( grpccore::Channel
объекта), которую вы хотите передать. Вы можете проверить старую реализацию для того, как grpcClient
создается.
Итак, в целом ваш код может выглядеть следующим образом:
// Assuming `settings` (a `SubscriberServiceApiSettings` object) is
// created (default to null)
// Assuming you’re created a `channel` object that is a `grpccore::Channel`
gax::GaxPreconditions.CheckNotNull(channel, nameof(channel));
grpccore::CallInvoker callInvoker = new grpccore::DefaultCallInvoker(channel);
gax::GaxPreconditions.CheckNotNull(callInvoker, nameof(callInvoker));
grpccore::Interceptors.Interceptor interceptor = settings?.Interceptor;
if (interceptor != null) {
callInvoker = grpccore::Interceptors.CallInvokerExtensions.Intercept(
callInvoker, interceptor);
}
Subscriber.SubscriberClient grpcClient = new Subscriber.SubscriberClient(callInvoker);
SubscriberServiceApiClient client = new SubscriberServiceApiClientImpl(
grpcClient, settings);