我正在尝试确定集群 ServiceMix 3.3.1/Camel 2.1/AMQ 5.3 应用程序的选项。我正在执行大量消息处理,我需要集群以实现高可用性和水平可扩展性。
这基本上是我的应用程序所做的...HTTP->QUEUE->PROCESS->DATABASE->TOPIC
from("码头: http: //0.0.0.0/inbound ") .to("activemq:inboundQueue");
from("activemq:inboundQueue?maxConcurrentConsumers=50") .process(decode()) .process(transform()) .process(validate()) .process(saveToDatabase()) .to("activemq:topic:ouboundTopic" );
所以,我已经阅读了所有的 ServiceMix 和 AcitveMQ 集群页面,但仍然不确定该走哪条路。
我知道我可以为 HA 使用主/从设置,但这对可扩展性没有帮助。
我已经阅读了有关经纪人网络的信息,但不确定这如何适用。例如,如果我在集群中的多个节点上部署相同的 Camel 路由,它们将如何准确地“交互”?如果我将 HTTP 生产者指向一个节点(NodeA),哪些消息将被发送到 NodeB?队列/主题是否会在节点 A/B 之间共享...如果是这样,消息是拆分还是重复?此外,外部客户端如何准确订阅我的“outboundTopic”(并获取所有消息等)?
或者,我一直在想我应该在多个 ServiceMix 实例之间共享一个代理。这样会更清晰,因为只有一组队列/主题要管理,我可以通过添加更多实例来扩展。但是,现在我仅限于单个代理的可扩展性,我又回到了单点故障......
如果有人可以为我澄清权衡...我将不胜感激。