Я пытаюсь определить параметры кластеризации моего приложения ServiceMix 3.3.1 / Camel 2.1 / AMQ 5.3.Я выполняю обработку большого объема сообщений и мне нужно кластеризовать для высокой доступности и горизонтальной масштабируемости.
Вот в основном то, что делает мое приложение ... HTTP-> QUEUE-> PROCESS-> DATABASE-> TOPIC
from ("jetty: 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, но я все еще не уверен, куда идти.
Я знаю, что могу использовать настройку Master / Slave для HA, но это не помогает с масштабируемостью.
I 'Я читал о сети брокеров, но не уверен, как это применимо. Например, если я разверну идентичные маршруты Camel на нескольких узлах в кластере, как они будут "точно взаимодействовать"? Если я укажу моего производителя HTTP на один узел (NodeA), какие сообщения будут отправлены на NodeB? Будут ли очереди / темыкрасный между узлами A / B ... если да, то как сообщения разделяются или дублируются?Кроме того, как внешний клиент мог бы точно подписаться на мою «outboundTopic» (и получить все сообщения и т. Д.)?
В качестве альтернативы я подумал, что мне следует просто разделить посредника между несколькими экземплярами ServiceMix.Это будет чище, потому что будет только один набор очередей / тем для управления, и я мог бы масштабировать, добавляя больше экземпляров.Но теперь я ограничен масштабируемостью одного брокера и вернусь к единой точке отказа ...
Если кто-нибудь сможет уточнить для меня компромиссы ... Я быценить это.