Как установить имя очереди из значения заголовка в Apache Camel

Я пытаюсь установить имя очереди activemq из значения заголовка, но это не происходит ниже, это мой Spring DSL

<setHeader headerName="x-so-queue-name" id="_setHeader1">
   <xpath resultType="java.lang.String">/Message/@IntObjectName</xpath>
</setHeader>
<log id="_log1" message="x-so-queue-name::: ${header.x-so-queue-name}"/>
<to id="_to1" uri="activemq:queue:${header.x-so-queue-name}"/>

ЖУРНАЛЫ 16:03:57,601 | ИНФО | _маршрут1 | x-так-имя-очереди::: IDC_SO_Refill_IO

значение заголовка печатается в журналах, но для имени очереди установлено значение «$ {header.x-so-queue-name}», почему он не получает значение для заголовка, я делаю что-то неправильно

введите здесь описание изображения


person herman shafiq    schedule 05.07.2017    source источник
comment
См. также часто задаваемые вопросы о динамическом переходе на: camel. apache.org/how-to-use-a-dynamic-uri-in-to.html. Но лучшим решением является то, что Мэтт говорит ниже, чтобы использовать CamelJmsDestinationName в качестве имени динамической очереди с минимальными накладными расходами в Camel.   -  person Claus Ibsen    schedule 05.07.2017


Ответы (1)


  1. Замените имя заголовка «x-so-queue-name» заголовком с именем «CamelJmsDestinationName».

  2. Затем в uri удалите ${header.x-so-queue-name}.. вы можете указать любое имя очереди, которое вы хотите, поскольку компонент ActiveMQ будет просматривать заголовок, чтобы определить имя назначения. Обычно я использую приведенное ниже как напоминание о том, что я использую динамическое именование очереди в маршруте:

Reference: Camel JMS Component (search for CamelJmsDestinationName)

person Matt Pavlovich    schedule 05.07.2017