0

我们正在将 .NET 平台从使用 MSMQ 转移到 ActiveMQ。我们每天通过它发送 30+ 百万条持久消息,因此吞吐量和容量对我们来说至关重要。我们的 MSMQ 依赖应用程序的配置方式是它们首先写入本地/私有队列。然后我们有一个本地服务,将这些消息路由到它们各自的远程队列进行处理。这确保了初始入队/写入速度很快(是的,我们也可以使用异步入队),并且如果远程服务器不可用,消息也不会丢失。

我们打算对 ActiveMQ 使用相同的范例,但现在我们决定将虚拟机与 NAS 存储一起用于我们的大多数应用程序服务器。这大大降低了每条消息的写入性能,因为它要发送到 NAS,我觉得我需要重新考虑我们的排队方法。我想知道什么是使用 ActiveMQ 的最佳实践,具有持久的高吞吐量需求。我应该考虑使用专用队列服务器(不是虚拟机)吗?但这意味着来自应用程序的所有写入都直接通过网络传输。如何处理高可用性要求?

任何建议表示赞赏。

4

1 回答 1

1

您可以在代理网络中部署 ActiveMQ 实例,并且拓扑可以包括本地实例和远程实例。我已经部署了包含 ActiveMQ 本地实例的拓扑,以便消息尽可能靠近发送者持久保存,然后根据需要将消息转发到远程 ActiveMQ 实例。使用这种拓扑样式,我建议将网络连接器配置为禁止从所有目的地转发消息。即,您可能希望使用excludedDestinations 属性来缩小转发的消息数量,而不是公开允许转发所有目的地的消息。

就 ActiveMQ 的高可用性而言,主/从配置正是为此而设计的。根据您的需要,它有三种口味。

希望有帮助。

布鲁斯

于 2010-08-14T20:56:00.590 回答