c# - 从连接字符串创建 ASB MessagingFactory 并提供设置

标签 c# .net azureservicebus

我想创建一个 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/

相关文章:

c# - 为什么互锁这么慢

c# - ThreadLocal<T> 和静态方法?

c# - Entity Framework ——如何在缩写的 EF linq 中实现这个 SQL

.net - 打开一个文件,.net 应用程序会识别它吗?

python - Celery + Azure 服务总线(代理)= 声明为空或 token 无效

c# - 从 Azure Servicebus/IotHub 接收消息

c# - System.InvalidCastException double 字符串

c# - System.Collections.Immutable 类型 : why no . 等于

c# - 如何使用 C# 在 Windows Server 2008 中写入事件日志?

c# - 服务总线 - 单例连接类?