背景
我的团队通常是 MassTransit 和消息传递的完整新手。我了解在网上找到的简单演示,但我对如何为非平凡场景进行设置感到困惑。(许多生产者,许多消费者,消费者与生产者交流)
我们目前通过同步调用直接从 Web 代码进行第 3 方 Web 服务调用。其中一些是出了名的缓慢和不可靠的浏览器超时和 YSOD,这不是我们代码的直接错误。我们希望将这些同步调用替换为消息和重试和毒队列的最终一致性。
我们还希望用消息传递替换各种计划/批处理任务,以更接近实时处理,而不是等待下一个批处理运行。
我们的网站在硬件负载平衡器后面的 6 台 IIS 服务器场上运行。有 2 个额外的“应用程序”服务器运行计划任务。我想我们会将我们的新工作服务放在应用服务器上,甚至可能放在所有 8 台服务器上。
问题
所以...... MT 文档的“常见问题”部分说每个应用程序都需要它自己的地址。我的问题是关于在这种情况下应用程序的确切定义是什么。
我有 6 台 Web 服务器运行该网站。这些中的每一个都需要一个唯一的地址,还是它们都只是“rabbitmq://localhost/MyApp/Website”。如果为多个工作进程配置 IIS 会怎样?每个人都需要不同的兔子地址吗?
我的 2 台应用程序服务器也有同样的问题。如果我在两个盒子上运行同一个工人,它需要不同的地址吗?有些东西说如果您希望竞争的消费者共享一个地址,但如果您希望将“事件”类型的消息传递给每个人,则它们需要是不同的地址。
如果您需要将事件(广播)和命令(消费一次)消息发送到工作集群怎么办?(同一个工人的多个实例来处理更多的负载。)
如果我将消费者直接托管在 Web 应用程序中怎么办?(我不确定这是一个好主意。)
请求/响应消息呢?我认为响应应该返回到原始 Web 服务器。否则 MT 请求调用将永远不会解除阻塞或最多超时。