我们正在将.NET平台从使用MSMQ迁移到ActiveMQ的过程中。我们每天通过它向30+注入数百万条持久消息,因此吞吐量和容量对我们来说至关重要。依赖于MSMQ的应用程序的配置方式是,它们首先写入本地/私有队列。然后我们有一个本地服务,它将这些消息路由到它们各自的远程队列进行处理。这确保了初始入队/写入是快速的(是的,我们也可以使用异步入队),并且如果远程服务器不可用,消息也不会丢失。
我们原本打算对ActiveMQ使用相同的范例,但现在我们决定将VM与NAS存储一起用于我们的大多数应用服务器。这极大地降低了每条消息的写入性能,因为它将发送到NAS,我觉得我需要重新考虑我们的排队方法。我想知道使用ActiveMQ的最佳实践是什么,以及持久的、高吞吐量的需求。我应该考虑使用专用的队列服务器(不是VM的)吗?但这意味着来自应用程序的所有写入都将直接通过网络进行。如何处理高可用性需求?
如有任何建议,欢迎光临。
发布于 2010-08-15 04:56:01
您可以在network of brokers中部署ActiveMQ实例,拓扑可以包括本地实例和远程实例。我已经部署了包含ActiveMQ的本地实例的拓扑,以便消息被持久化,尽可能靠近发送者,然后根据需要将消息转发到远程ActiveMQ实例。对于这种类型的拓扑,我建议将网络连接器配置为禁止从所有目的地转发消息。也就是说,您可能希望使用excludedDestinations属性来缩小转发消息的数量,而不是公开地允许转发所有目的地的消息。
就ActiveMQ的高可用性而言,master/slave配置正是为此而设计的。根据你的需要,它有三种口味。
希望这能有所帮助。
布鲁斯
https://stackoverflow.com/questions/3478375
复制相似问题