Azure 将QueueClient.Create转换为MessagingFactory.CreateQueueClient

Azure 将QueueClient.Create转换为MessagingFactory.CreateQueueClient,azure,azureservicebus,azure-servicebus-queues,Azure,Azureservicebus,Azure Servicebus Queues,尝试将使用.net库的实现从使用QueueClient.Create转换为MessagingFactory.CreateQueueClient,以便能够更好地控制BatchFlushInterval,并允许在多个连接上使用多个工厂来增加发送吞吐量,但会遇到障碍 现在,我们正在创建QueueClient(它们在整个应用程序中都得到维护),如下所示: QueueClient.CreateFromConnectionString(地址、队列名称、ReceiveMode.PeekLock);//addr

尝试将使用.net库的实现从使用QueueClient.Create转换为MessagingFactory.CreateQueueClient,以便能够更好地控制BatchFlushInterval,并允许在多个连接上使用多个工厂来增加发送吞吐量,但会遇到障碍

现在,我们正在创建QueueClient(它们在整个应用程序中都得到维护),如下所示:

QueueClient.CreateFromConnectionString(地址、队列名称、ReceiveMode.PeekLock);//address是来自azure门户的连接字符串,格式为Endpoint=sb…

正在尝试将其更改为在将用于创建QueueClient的类构造函数中创建MessagingFactory:

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

另一方面,我们有一个进程,它试图将尽可能多的消息推送到一个队列,而其他人则在阅读它。读者似乎很容易跟上发件人的步伐,我正在尝试最大化发送速率。

该地址是您要连接的命名空间(
sb://yournamespace.servicebus.windows.net/
)的基址。有关更多信息,请参阅。以下是演示代码:

 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);

相同的代码适用于连接字符串
Endpoint=sb://tadada.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=blabla
。您的格式不同吗?当使用与您相同的格式时,它抛出:
System.UriFormatException:无效的URI:URI方案无效。在Microsoft.ServiceBus.Messaging.MessagingFactory.Create(字符串地址,MessagingFactorySettings factorySettings)…