我们正在将 .NET 平台从使用 MSMQ 转移到 ActiveMQ。我们每天通过它发送 30+ 百万条持久消息,因此吞吐量和容量对我们来说至关重要。我们的 MSMQ 依赖应用程序的配置方式是它们首先写入本地/私有队列。然后我们有一个本地服务,将这些消息路由到它们各自的远程队列进行处理。这确保了初始入队/写入速度很快(是的,我们也可以使用异步入队),并且如果远程服务器不可用,消息也不会丢失。
我们打算对 ActiveMQ 使用相同的范例,但现在我们决定将虚拟机与 NAS 存储一起用于我们的大多数应用程序服务器。这大大降低了每条消息的写入性能,因为它要发送到 NAS,我觉得我需要重新考虑我们的排队方法。我想知道什么是使用 ActiveMQ 的最佳实践,具有持久的高吞吐量需求。我应该考虑使用专用队列服务器(不是虚拟机)吗?但这意味着来自应用程序的所有写入都直接通过网络传输。如何处理高可用性要求?
任何建议表示赞赏。