У меня есть маршрут Camel, который отменяет сообщение из очереди, отправляет его компоненту для обработки, а затем возвращает сообщение обратно в другую очередь.Camel EIP для фильтрации дубликатов
Я пытаюсь устранить «повторяющиеся сообщения» во второй очереди. Есть ли у Camel какие-либо конечные точки, процессоры, EIP и т. Д., Которые я мог бы настроить для дедуплирования сообщения в пути, прежде чем они будут отправлены во вторую очередь?
Пример:
<route id="myRoute">
<from uri="{{queue-1-uri}}" />
<to uri="bean:myBean?method=process" />
<!-- How to dedupe right here??? -->
<to uri="{{queue-2-uri}}" />
</route>
Update: возможно, что-то вроде этого:
<route id="myRoute">
<from uri="{{queue-1-uri}}" />
<to uri="bean:myBean?method=process" />
<filter>
<method>what goes here???</method>
<to uri="{{queue-2-uri}}" />
</filter>
</route>
За предложение Ральфа, я мог бы сослаться на компонент внутри <method></method>
который затем используется кэш, чтобы сохранить сообщения в Память.
Say это новый боб называется FilterBean
и был метод dedupe()
на ней: как я подключить его в Spring XML, и какие классы/интерфейсы делает боб нужно реализовать, чтобы называться внутри маршрута ?
Вы можете использовать кэш, как Ehcache или Memcached, который поддерживает распределенную развертывание в качестве службы бэкэнда к [Фильтр сообщений] (http://camel.apache.org/message-filter.html). – Ralf
Спасибо @ Ralf (+1) - см. Мое обновление. Любые идеи относительно того, какой API/интерфейс мне нужно реализовать для 'FilterBean', и как подключить его в Spring XML? Еще раз спасибо! – AdjustingForInflation