我正在研究在我们的应用程序中使用 MassTransit 和 RabbitMQ 作为 ESB。我正在寻找的主要好处是向传入的数据流添加持久的异步消息处理。我们的应用程序配置文件有两个部分:传入数据流 一种方式消息 异步处理 每分钟 10k+ 条消息 网站事件 两种方式 理想情况下使用 c# async await 语言功能,但需要双向数据 Web 应用程序消息传递不是必需的,但最好遵循相同的机制来完全抽象出通过 ESB 的数据访问。 问题:从我读过的; ESB 节点不应该知道或关心总线上的任何其他节点,它应该只做自己的工作并将消息发送到总线上,在需要时等待回复。对我来说,这意味着每个 Web/应用程序服务器都有自己的本地集群队列。这个假设正确吗?如果那是正确的;我将如何以编程方式将机器添加到集群?有什么我需要注意的问题吗?如果这不正确;我将如何管理队列集群?创建专用集群有其自身的问题,例如 DNS 条目、冗余/离线节点的负载平衡等我对 ESB 可以随 MassTransit 的实现一起添加的功能感到失望,但是我对在哪里/如何在持久配置中设置它的最佳实践的后勤工作感到有些困惑。感谢您的任何反馈和建议 更新 我们将 EC2 用于机器基础设施,特别是我们使用可用区来最大程度地减少任何数据中心中断。通过这种配置,我们有 3 个区域,每个区域都有一个 Web 服务器、应用程序服务器和数据库服务器(Couchbase)。我们还利用 EC2 的负载均衡器在区域之间共享负载。@Travis:您对在 Amazon 的 EC2 中使用 MT/RMQ 有什么经验/建议吗? 最佳答案 因此,在规模远大于您的规模的情况下,我们有一个 RabbitMQ 集群,该集群位于负载平衡(F5)之后。所有使用 MT 的进程都引用负载平衡地址。每个进程唯一需要的是它自己的接收队列。RabbitMQ (3.0+) 中的集群全部在 RabbitMQ 配置中处理。进程/代码对集群一无所知。我不确定你在这个问题中所说的“节点”是什么意思,所以很难确定我回答的是正确的问题。但是,只要您在 RabbitMQ 中向同一个 vhost(默认或其他)添加一个进程,MT 就会连接它需要的所有部分(交换、队列和绑定(bind))。关于rabbitmq - MassTransit RabbitMQ 节点分布,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18844799/ 10-16 12:23