Очередь для сообщений из двух источников в 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:...")

Вам нужно будет обратить внимание на настройки тайм-аута и то, что подходит.

(Примечание: я не тестировал этот код, поэтому, пожалуйста, внесите его в качестве предложения).

Другие вопросы по тегам