我正在研究在我们的应用程序中将 MassTransit 和 RabbitMQ 用作 ESB。我正在寻找的主要好处是向传入的数据流添加持久的异步消息处理。
我们的应用程序配置文件有两个部分:
传入数据流
- 单向消息传递
- 异步处理
- 每分钟 10k+ 条消息
网站活动
- 两种方式
- 理想情况下使用 c# async await 语言功能,但需要双向数据
- < 100 每分钟
Web 应用程序消息传递不是必需的,但最好遵循相同的机制来完全抽象出通过 ESB 的数据访问。
问题:
从我读到的;ESB 节点不应该知道或关心总线上的任何其他节点,它应该只做自己的工作并将消息发送到总线上,并在需要时等待回复。对我来说,这意味着每个 Web / 应用程序服务器都有自己的本地集群队列。这个假设正确吗?
如果这是正确的;我如何以编程方式将机器添加到集群中?有什么我需要注意的问题吗?
如果这不正确;我将如何管理队列集群?创建专用集群有其自身的问题,例如 DNS 条目、冗余/离线节点的负载平衡等
我对 ESB 可以与 MassTransit 的实现一起添加的功能感到失望,但是我对在哪里/如何在持久配置中设置它的最佳实践的后勤工作感到有些困惑。
感谢您的任何反馈和建议
更新 我们正在将 EC2 用于机器基础设施,特别是我们使用可用区来最大限度地减少任何数据中心中断。通过这种配置,我们有 3 个区域,每个区域都有一个 Web 服务器、应用程序服务器和数据库服务器(Couchbase)。我们还利用 EC2 的负载均衡器在区域之间共享负载。
@Travis:您对在 Amazon 的 EC2 中使用 MT/RMQ 有任何经验/建议吗?