Преобразовать QueueClient.Create в MessagingFactory.CreateQueueClient - PullRequest
0 голосов
/ 28 апреля 2018

Попытка преобразовать реализацию с использованием библиотеки .net из QueueClient.Create в MessagingFactory.CreateQueueClient, чтобы иметь возможность лучше контролировать BatchFlushInterval, а также разрешить использование нескольких фабрик по нескольким соединениям для увеличения пропускной способности отправки, но при этом выполняется в контрольно-пропускные пункты.

Сейчас мы создаем QueueClients (они поддерживаются в приложении) следующим образом:

QueueClient.CreateFromConnectionString(address, queueName, ReceiveMode.PeekLock); // address is the connection string from the azure portal in the form of Endpoint=sb....

Попытка изменить его на создание MessagingFactory в классе construtor, который будет использоваться для создания QueueClients:

messagingFactory = MessagingFactory.Create(address.Replace("Endpoint=",""),mfs);
// later on in another part of the class
messagingFactory.CreateQueueClient(queueName, ReceiveMode.PeekLock);
// error Endpoint not found.,

Это приводит к ошибке. Конечная точка не найдена. Если я не заменю конечную точку =, она даже не создаст MessagingFactory. Как правильно справиться с этим?

Примечания:

  • address = Endpoint=sb://pmg-bus-mybus.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=somekey

Кроме того, у нас есть процесс, который пытается отправить как можно больше сообщений в очередь, а другие читают ее. Читатели, кажется, легко идут в ногу с отправителем, и я пытаюсь максимизировать скорость отправки.

1 Ответ

0 голосов
/ 30 апреля 2018

Адрес - это базовый адрес пространства имен (sb://yournamespace.servicebus.windows.net/), к которому вы подключаетесь. Для получения дополнительной информации, пожалуйста, обратитесь к MessagingFactory . Ниже приведен демонстрационный код:

 var Address = "sb://yournamespace.servicebus.windows.net/"; //base address of namespace you are connecting to.
 MessagingFactorySettings MsgFactorySettings = new MessagingFactorySettings
            {
                NetMessagingTransportSettings = new NetMessagingTransportSettings
                {
                    BatchFlushInterval = TimeSpan.FromSeconds(2)
                },
                TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider("RootManageSharedAccessKey", "balabala..."),
                OperationTimeout = TimeSpan.FromSeconds(30)
            }; //specify operating timeout (optional)
 MessagingFactory messagingFactory = MessagingFactory.Create(Address, MsgFactorySettings);
 var queue =  messagingFactory.CreateQueueClient("queueName",ReceiveMode.PeekLock);
 var message = queue.Receive(TimeSpan.Zero);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...