如何在 Apache Camel 中从 Header 值设置 Queue 名称

How to set Queue name from Header value in Apache Camel

我试图从 header 值设置 activemq queue 名称,但它没有发生在下面是我的 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 |信息 | _route1 | x-so-queue-name::: IDC_SO_Refill_IO

header 值正在日志中打印,但 queue 名称设置为“${header.x-so-queue-name}” 为什么它不检索值header,我是不是做错了什么

  1. 将 'x-so-queue-name' header 名称替换为名为 'CamelJmsDestinationName'

  2. 的 header
  3. 然后在 uri 中,删除 ${header.x-so-queue-name}.. 你可以输入任何你想要的 queue 名称,因为 ActiveMQ 组件将查看 header 以确定目标名称。我通常使用下面的,作为我在路由中使用动态 queue 命名的提醒:

参考:Camel JMS Component (search for CamelJmsDestinationName)