MassTransmit - 分布式消息传递模型 - 可靠/耐用 - NServiceBus太昂贵了

时间:2014-05-14 08:53:20

标签: rabbitmq nservicebus servicebus masstransit

我想使用类似于NServiceBus的MassTransmit,每个发布者和订阅者都有一个本地队列。但是我想使用RabbitMQ。

所有我的桌面客户端都必须安装RabbitMQ,我想是这样,那么我应该将50个桌面客户端和2个服务器连接到群集中吗?

我知道这两台服务器必须位于同一个集群中。然而,50个客户端节点,似乎是一个群岛......或者我应该铲除它们还是将它们联合到服务器集群交换机?

桌面计算机发送以下消息:LockOrder,UnLock Order。

服务器正在处理后端hl7消息。

非常感谢这里的任何帮助和建议,这些都在Windows机器上。

基本上我要离开NServiceBus,因为它现在太贵了,他们的目标是预算很大的大公司,因此Masstransmit。

但是我想要可靠/持久的消息传递,因此所有发布者和所有订阅者都需要本地队列。

桌面还使用CQS更新其视图。

2 个答案:

答案 0 :(得分:1)

  

我应该将50个桌面客户端和2个服务器连接到群集中吗?

是的,您必须将客户端连接到群集。

  

然而,50个客户端节点似乎只能放在一个集群中。

不,(或者它取决于你的服务器有多大)50个客户端是一个小数字

  

或者我应该将它们铲除或将它们联合到服务器群集交换机?   桌面计算机发送消息,如:LockOrder,UnLock Order。

我认为群集更好,因为联合和铲子是异步的,这意味着你的LockOrder可能无法及时复制。

  

但是我想要可靠/持久的消息传递,因此所有发布者和所有订阅者都需要本地队列

通过RMQ,您可以创建持久性队列和消息,如果客户端已连接,则无需这样做。它将在连接到代理时获取消息。

我希望它有所帮助。

答案 1 :(得分:1)

我有一个名为Shuttle的FOSS ESB rpoject,如果你想给它一个旋转:https://github.com/Shuttle/shuttle-esb

我有一段时间没有使用过NServiceBus,实际上在商用时启动了Shuttle。实现与NServiceBus有些不同。但我完全不知道MassTransit。目前,流程管理员(sagas)必须在Shuttle中手工滚动,而MassTransit和NServiceBus则将其合并。如果我确实要添加sagas,我会将它们添加为可以插入接收管道的模块。这样就可以有各种实现方式并选择你喜欢的风格:)

回到你的问题。 Shuttle具有可选的发件箱概念,用于排队技术,如RabbitMQ。 Shuttle确实有RabbitMQ实现。我相信发件箱的工作方式有点像“铲子”。因此,发件箱将是本地的,发送消息将首先发送到发件箱。它会定期尝试将消息发送给收件人,并在可配置的尝试次数后,将消息发送到错误队列。然后可以将其返回到发件箱以进行进一步尝试,甚至可以在收件人队列启动后直接移至收件人队列。

此处的文档:http://shuttle.github.io/shuttle-esb/