Я хочу прослушать тему ActiveMQ на основе имени хоста системы и некоторой другой логики. Я планировал использовать pollEnrich
для этого, поэтому я оцениваю свою логику и предоставляю название темы в pollEnrich
, но согласно документу :
pollEnrich
или enrich
не имеет доступ к любым данным из текущего Exchange, что означает, что при опросе он не может использовать ни один из существующих заголовков, которые вы, возможно, установили на Exchange. Например, вы не можете установить имя файла в заголовке Exchange.FILE_NAME
и использовать pollEnrich
, чтобы использовать только этот файл. Для этого вы должны установить имя файла в URI конечной точки.
Как я могу это выяснить
from("timer://ipc?repeatCount=1")
.. some logic..
.setHeader("topic_no",simple("{{env:HOSTNAME}}"))
.pollEnrich("mqtt:foo?host=tcp://0.0.0.0:1883&subscribeTopicNames=${header.topic_no}/status&clientId=ipc")
.to("log:my?showAll=true&multiline=true");
Пожалуйста, не предлагайте использовать имя хостапрямо в URI. Как я уже подчеркнул, мне нужно вычислить и другую логику.
- Какой другой вариант или способ я могу использовать?
- Будет ли pollEnrich продолжать прослушивание темы или он прослушает один раз и завершит маршрут?
Update1: Я понял, что мы можем использовать простое выражение с для динамического URI, но одна проблема с pollEnrich - это выбрать только одно сообщение, как я могу убедиться, что оно продолжает слушать, какпотребитель? Я хочу, чтобы перед запуском части pollEnrich выполнялся один раз, а TopicListener продолжал прослушивать, пока приложение не будет запущено.