我正在尝试将我的 NServiceBus 项目配置为使用 WebSphere mq。我一直在搜索所有其他网络,但没有找到任何最新的示例。根据这篇文章,有一个 dll 公开了用于 WMQ 配置的 API。但是,他们的示例适用于非常旧的 NServiceBus 版本,并且与当前 (4.3.1) 版本不兼容。唯一有一些真实示例的手册是这本手册,它适用于 PubSub,而不适用于简单的客户端服务器配置。谁能告诉我一个最新的例子,描述我应该如何配置我的 NSB 项目以使用 WMQ。
谢谢!
我已将 NServiceBus.WebSphereMQ 迁移到 NServiceBus 版本 5。使用 POC 的解决方案后,实现不是很优雅,因此,我没有勇气在 Git Hub 上发布它:-D。
在 POC 中,我使用 NServiceBus.WebSphereMQ 传输创建了两个端点。
配置非常简单。
在每个端点的配置文件 (app.config) 中,我指定了以下设置:
<configSections>
...
<section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" />
<section name="AuditConfig" type="NServiceBus.Config.AuditConfig, NServiceBus.Core" />
...
</configSections>
<AuditConfig QueueName="audit" />
<MessageForwardingInCaseOfFaultConfig ErrorQueue="error" />
...
<connectionStrings>
<add name="NServiceBus/Transport" connectionString="hostname=localhost;port=1414;queueManager=NEOS;channel=NEOS;" />
</connectionStrings>
注意连接字符串很重要。QueueManager 名称和 Channel 名称是非常重要的信息,稍后会指定。使用 VisualStudio 2013 的 ServiceMatrix,我已经自动生成了 EndpointConfig 文件,在里面指定了传输的逻辑:
public partial class EndpointConfig : IConfigureThisEndpoint, AsA_Server
{
public void Customize(BusConfiguration configuration)
{
configuration.UseSerialization<JsonSerializer>();
configuration.UsePersistence<InMemoryPersistence>();
configuration.UseTransport<WebSphereMQ>();
}
}
这就是代码方面的全部内容。
为了测试使用 MQ 的通信,我从 IBM 网站下载了 WebSphere MQ Advanced(它是免费的): http ://www-01.ibm.com/support/docview.wss?uid=swg24032734 如果您安装的是 7.5 版,请记住安装推荐的修补程序!
首先你必须配置一个QueueManager。为此,我使用了如下所示的 WebSphere MQ Explorer 工具:
然后,您必须创建一个 Server-Connection 通道:
要使用该频道,您必须提供授权
此时每个端点都能够在第一次运行时自动创建所有队列。效果很好!
我希望我有帮助
我们一直在为 v4 开发 WebSphereMQ 传输,请参阅https://github.com/Particular/NServiceBus.WebSphereMQ
您是否联系过 WMQ 的 NServiceBus 适配器的作者/开发者?如果不是,为什么不呢?你会从他们那里得到最好的答案。