我想使用类似于NServiceBus的MassTransmit,每个发布者和订阅者都有一个本地队列。但是我想使用RabbitMQ。
所有我的桌面客户端都必须安装RabbitMQ,我想是这样,那么我应该将50个桌面客户端和2个服务器连接到群集中吗?
我知道这两台服务器必须位于同一个集群中。然而,50个客户端节点,似乎是一个群岛......或者我应该铲除它们还是将它们联合到服务器集群交换机?
桌面计算机发送以下消息:LockOrder,UnLock Order。
服务器正在处理后端hl7消息。
非常感谢这里的任何帮助和建议,这些都在Windows机器上。
基本上我要离开NServiceBus,因为它现在太贵了,他们的目标是预算很大的大公司,因此Masstransmit。
但是我想要可靠/持久的消息传递,因此所有发布者和所有订阅者都需要本地队列。
桌面还使用CQS更新其视图。
答案 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实现。我相信发件箱的工作方式有点像“铲子”。因此,发件箱将是本地的,发送消息将首先发送到发件箱。它会定期尝试将消息发送给收件人,并在可配置的尝试次数后,将消息发送到错误队列。然后可以将其返回到发件箱以进行进一步尝试,甚至可以在收件人队列启动后直接移至收件人队列。