Очередь для сообщений из двух источников в Apache Camel в хронологическом порядке
Я хотел бы реализовать следующий сценарий в Apache Camel (входит в JBoss Fuse):
У меня есть две системы, обе они генерируют события, хранящиеся в базе данных отдельно. Теперь мне нужно прочитать события из этих таблиц событий и поместить их как сообщения в очередь (реализовано ActiveMQ). Но что действительно важно, мне нужно хранить хронологический порядок (время создания) событий в этой очереди, независимо от того, где событие было создано.
Я ищу решение, которое максимально использует компоненты и шаблоны из среды Camel, конечно, я могу реализовать механизм чтения вне Camel (чистая Java), но я предпочитаю решение Camel.
Большое спасибо за любую идею!
1 ответ
Я думаю, что вы просто хотите выложить сообщения на seda
очереди и использовать resequencer
объединить их обратно в порядок.
from("--database1--")
to("seda:resequencer")
from("--database2--")
to("seda:resequencer")
from("seda:resequencer")
.resequence(header("date")).batch().timeout(5000L)
.to("activemq:...")
Вам нужно будет обратить внимание на настройки тайм-аута и то, что подходит.
(Примечание: я не тестировал этот код, поэтому, пожалуйста, внесите его в качестве предложения).