Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MassTransit是否支持MSMQ over HTTP传输?_C#_.net_Msmq_Masstransit - Fatal编程技术网

C# MassTransit是否支持MSMQ over HTTP传输?

C# MassTransit是否支持MSMQ over HTTP传输?,c#,.net,msmq,masstransit,C#,.net,Msmq,Masstransit,HTTP传输自MSMQ 3.0以来就已可用,但我担心MassTransit没有提供将HTTP协议用作队列之间传输协议的功能 关于这一点,有一个非常类似的问题,尚未得到完全回答 有人知道客户端是否可以订阅总线并通过HTTP发送/接收消息吗?以下是我愿意实施的体系结构: 我将在本地网络中有两台计算机 计算机A运行服务器应用程序和MassTransit.RuntimeServices 计算机B运行客户端应用程序,向 我希望它们之间的通信通过http完成 我试图将UseSubscriptionSer

HTTP传输自MSMQ 3.0以来就已可用,但我担心MassTransit没有提供将HTTP协议用作队列之间传输协议的功能

关于这一点,有一个非常类似的问题,尚未得到完全回答

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

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

  • 计算机A运行服务器应用程序和MassTransit.RuntimeServices
  • 计算机B运行客户端应用程序,向
我希望它们之间的通信通过http完成

我试图将
UseSubscriptionService
中的地址改为
http
,而不是
msmq
,但没有成功。如果我将计算机的AMSMQ服务设置为强化模式,则在计算机B上运行的客户端应用程序在尝试订阅
mtu订阅时会超时

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
            });

关于这方面的任何线索???

不,MassTransit不支持MSMQ的HTTP。理论上,你可以添加你自己的交通工具来支持这一点。RabbitMQ在各个方面都优于MSMQ,除非您需要注册分布式事务。RabbitMQ只需要在框之间打开一个端口

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

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


通过自定义合同和HTTP/HTTPS传输,我们独立于中间的实际消息总线。这是值得的,我们使用另一辆公交车已经有两年了,两年前我们迁移到了基于公共交通的公交车上,客户(出版商/订阅者)没有任何变化。

好的,我就是这么想的。但我也想知道MassTransit不支持HTTP上的MSMQ传输是否有原因。据我所知,使用MSMQ通过HTTP向远程队列发送消息非常容易(只需更改其地址字符串),但是您无法通过HTTP从远程队列接收消息。然而,MassTransit在每台主机中使用本地队列来接收消息,因此,在MassTransit中,难道没有一种不费吹灰之力就能实现它的方法吗?不幸的是,我不能使用RabbitMQ…是的,我理解不能使用RMQ。我很抱歉:(.因此,您可以通过HTTP实现发送,但这并不是MT真正的工作方式。正如我所说,您可以实现/重新实现MSMQ传输以使用HTTP进行发送。这不是我们需要支持的东西,也没有那么健壮。这似乎是一种可行的方法。我还希望应用程序在某种程度上独立于消息总线实际上,这种方法让您在实现输入和输出端口时有很大的自由度,您可以完全控制安全措施。例如,我们为我们的web服务端口实现了消息级安全性。消息经过签名,并且只接受签名消息。自是在输入/输出端口边界执行的,总线内的实际流甚至不必涉及安全性-总线从外部不可用。这也是我们与其他系统集成的方式。我认为这是一个很好的方法。此外,输入服务实际上什么都不做,只向队列发送消息,因此服务始终是响应的安瑟夫。