C# 从连接字符串创建ASB MessagingFactory并提供设置
我想从连接字符串创建Azure Service BusC# 从连接字符串创建ASB MessagingFactory并提供设置,c#,.net,azureservicebus,C#,.net,Azureservicebus,我想从连接字符串创建Azure Service BusMessagingFactory实例,并指定BatchFlushInterval设置 MessagingFactory上接受连接字符串的工厂方法不接受MessagingFactorySettings实例 MessagingFactory上接受MessagingFactorySettings实例的工厂方法不接受连接字符串 最接近我的是: var connectionStringBuilder=new ServiceBusConnectionS
MessagingFactory
实例,并指定BatchFlushInterval
设置
MessagingFactory
上接受连接字符串的工厂方法不接受MessagingFactorySettings
实例
MessagingFactory
上接受MessagingFactorySettings
实例的工厂方法不接受连接字符串
最接近我的是:
var connectionStringBuilder=new ServiceBusConnectionStringBuilder(connectionString);
var messagingSettings=新MessagingFactorySettings
{
TokenProvider=TokenProvider.CreateSharedSecretTokenProvider(connectionStringBuilder.SharedSecretIsUserName,connectionStringBuilder.SharedSecretIsUserSecret),
NetMessagingTransportSettings=
{
BatchFlushInterval=TimeSpan.FromMillicles(100)/我发现的方法是使用命名空间管理器中的令牌提供程序。因此:
var namespaceMngr = NamespaceManager.CreateFromConnectionString(namespaceConnString);
MessagingFactorySettings mfs = new MessagingFactorySettings();
mfs.TokenProvider = namespaceMngr.Settings.TokenProvider;
mfs.NetMessagingTransportSettings.BatchFlushInterval = TimeSpan.FromSeconds(timeToFlush);
MessagingFactory mf = MessagingFactory.Create(namespaceMngr.Address, mfs);
如果您试图设置AmqpTransportSettings.BatchFlushInterval
而不是NetMessagingTransportSettings.BatchFlushInterval
,那么我帮不了您,实际上我无意中发现了这篇文章,正在寻找答案。试图更改AmqpTransportSettings.BatchFlushInterval
似乎不符合de>MessageFactory
即使MessageFactorySettings
反映了更改。JordanSchillers answer修复了令牌提供程序问题,但我的地址现在使用的是端口9355而不是9354
最后,我混合使用ServiceBusConnectionStringBuilder和NamespaceManager:
var serviceBusConnectionString = new ServiceBusConnectionStringBuilder(connection.ConnectionString);
MessagingFactorySettings factorySettings = new MessagingFactorySettings();
factorySettings.TransportType = serviceBusConnectionString.TransportType;
//Use the namespacemanager to create the token provider.
var namespaceManager = NamespaceManager.CreateFromConnectionString(connection.ConnectionString);
factorySettings.TokenProvider = namespaceManager.Settings.TokenProvider;
factorySettings.NetMessagingTransportSettings.BatchFlushInterval = TimeSpan.FromMilliseconds(batchTimeInMs);
MessagingFactory factory = MessagingFactory.Create(serviceBusConnectionString.Endpoints, factorySettings);
return factory.CreateTopicClient(topicName);
我认为你做得对。在创建
MessagingFactory
之后,你不能修改MessagingFactory设置。你找到了这样做的方法吗?我也在努力解决同样的问题。不,这似乎是不可能的。但我从那时起就没有看过,所以你永远不知道。这很有效,但似乎有令人讨厌的副作用检查namespaceMngr.Address是否具有端口9355,而不是使用TopicClient.CreateFromConnectionString()获得的9354。