3

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

这里有一个非常相似的问题,尚未完全回答。

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

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

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

我希望它们之间的通信通过http完成。

我试图将地址更改为UseSubscriptionServicehttp而不是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
            });

有什么线索吗??

4

2 回答 2

4

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

于 2013-10-24T18:53:35.350 回答
3

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

另一方面,相同的合约用于向订阅者传递消息。

通过自定义合约和 http/https 传输,我们独立于中间的实际消息总线。这是值得的,我们使用另一辆公共汽车大约 2 年和 2 年前我们迁移到基于公共交通的公共汽车,而没有对客户(出版商/订阅者)进行任何更改。

于 2013-10-24T20:34:34.267 回答