我想创建一个 Azure 服务总线 MessagingFactory
来自连接字符串的实例和特定于BatchFlushInterval
设置。
MessagingFactory
上的工厂方法采用连接字符串的不采用MessagingFactorySettings
实例。
MessagingFactory
上的工厂方法这需要 MessagingFactorySettings
实例不采用连接字符串。
我最接近的是这个:
var connectionStringBuilder = new ServiceBusConnectionStringBuilder(connectionString);
var messagingSettings = new MessagingFactorySetttings
{
TokenProvider = TokenProvider.CreateSharedSecretTokenProvider(connectionStringBuilder.SharedSecretIssuerName, connectionStringBuilder.SharedSecretIssuerSecret),
NetMessagingTransportSettings =
{
BatchFlushInterval = TimeSpan.FromMilliseconds(100) // <-- This is the setting I want to specify.
}
};
var messagingFactory = MessagingFactory.CreateFromConnectionString(connectionStringBuilder.Endpoints, messagingSettings);
但这只有在您知道这是连接字符串中提供的特定 token 提供者信息时才有效。如果它做了其他事情,比如使用其他五种提供 token 的方法之一,那么这段代码就会失败。
如何创建 MessagingFactory
来自连接字符串的实例和指定BatchFlushInterval
?
最佳答案
我找到的方法是使用 namespace 管理器中的 token 提供程序。所以:
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
似乎不会坚持 MessageFactory
,即使 MessageFactorySettings
反射(reflect)了更改。
关于c# - 从连接字符串创建 ASB MessagingFactory 并提供设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39278413/