MassTransit是否通过HTTP传输支持MSMQ?

时间:2013-10-24 17:31:10

标签: c# .net msmq masstransit

自MSMQ 3.0以来,HTTP传输已经可用,但我担心MassTransit不提供使用HTTP协议作为队列之间的传输协议的功能。

关于这个here有一个非常相似的问题,但尚未完全回答。

有没有人知道客户端是否可以订阅总线并通过HTTP发送/接收消息?这是我愿意实施的架构:

我将在本地网络中拥有2台计算机

  • 计算机A 运行服务器应用程序和MassTransit.RuntimeServices
  • 计算机B 运行一个向A
  • 发送消息的客户端应用程序

我希望他们之间的沟通能够通过http。

完成

我尝试将UseSubscriptionService中的地址更改为http而不是msmq,但它不起作用。如果我将计算机的A MSMQ服务设置为强化模式,则在计算机B 上运行的客户端应用程序在尝试订阅mt_subscriptions时会超时。

Bus.Initialize(sbc =>
            {
                sbc.UseMsmq();
                sbc.VerifyMsmqConfiguration();
                sbc.UseMulticastSubscriptionClient();
                sbc.ReceiveFrom("msmq://localhost/test_queue_client");
                sbc.UseSubscriptionService("msmq://m3-dev1/mt_subscriptions"); // maybe I could use http instead of msmq, but it doesn't work
            });

关于那个的任何线索?

2 个答案:

答案 0 :(得分:3)

不,MassTransit不支持MSMQ的HTTP。理论上,您可以添加自己的传输来支持它。除非您需要注册分布式事务,RabbitMQ在各方面都是比MSMQ更好的传输方式。而RabbitMQ只需要在盒子之间打开一个端口。

答案 1 :(得分:2)

我们的分布式集成方法是拥有一个具有适当安全性的自定义Web服务合同。这定义了输入端口。输入端口实际上是向公共交通巴士发布消息。

另一方面,同一合约用于向订阅者发送消息。

通过自定义合同和http / https传输,我们独立于中间的实际消息总线。而这笔费用,我们使用另一辆巴士2年和2年前我们迁移到公共交通巴士,没有任何变化客户(出版商/订户)。