0

我正在尝试将我的 NServiceBus 项目配置为使用 WebSphere mq。我一直在搜索所有其他网络,但没有找到任何最新的示例。根据这篇文章,有一个 dll 公开了用于 WMQ 配置的 API。但是,他们的示例适用于非常旧的 NServiceBus 版本,并且与当前 (4.3.1) 版本不兼容。唯一有一些真实示例的手册是这本手册,它适用于 PubSub,而不适用于简单的客户端服务器配置。谁能告诉我一个最新的例子,描述我应该如何配置我的 NSB 项目以使用 WMQ。

谢谢!

4

3 回答 3

2

我已将 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 通道:

在此处输入图像描述

要使用该频道,您必须提供授权

在此处输入图像描述

此时每个端点都能够在第一次运行时自动创建所有队列。效果很好!

在此处输入图像描述

我希望我有帮助

于 2016-09-30T14:10:32.017 回答
1

我们一直在为 v4 开发 WebSphereMQ 传输,请参阅https://github.com/Particular/NServiceBus.WebSphereMQ

于 2013-12-26T22:39:19.117 回答
0

您是否联系过 WMQ 的 NServiceBus 适配器的作者/开发者?如果不是,为什么不呢?你会从他们那里得到最好的答案。

于 2013-12-26T18:24:54.403 回答