Верблюжий маршрут - Фильтровать все, кроме первого сообщения - PullRequest
0 голосов
/ 31 мая 2019

Можно ли отфильтровать сообщения, чтобы пересылалось только одно с данным выражением корреляции?

У меня есть поток сообщений с разных устройств.Я хочу сохранить таблицу SQL со всеми устройствами, с которыми уже встречались.

Тривиальным способом было бы перенаправить все сообщения в компонент SQL с помощью оператора вставки.Но это создаст ненужную нагрузку на БД, потому что устройства отправляют с высокой частотой.

Мое текущее решение состоит в том, чтобы иметь предикат java, который возвращает true при первом обращении к идентификатору устройства с момента последнего перезапуска.

Это работает, но я хотел бы посмотреть, смогу ли я заменить это бортовыми методами на верблюдах, что потенциально облегчает понимание маршрута.

Есть ли способ использовать агрегацию для прохождения только первогосообщение с заданным значением корреляции?

1 Ответ

1 голос
/ 03 июня 2019

Существует идемпотентный верблюжий потребитель , который делает именно это.

С помощью хранилища уже обработанных сообщений оно отбрасывает любое дальнейшее сообщение с такими же идентификационными характеристиками.

Это очень удобно, когда у вас есть хотя бы один раз семантика доставки сообщений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...