【问题标题】:Exchange message Header formatting交换邮件标题格式
【发布时间】:2020-06-07 16:15:22
【问题描述】:

我正在尝试设置交换消息标头。我需要帮助格式化代码。我需要在标题中设置以下值

usr.Person.Name = "Peter"
usr.Person.ID = "ABC123"

我试过了

exchange.getIn().setHeader("usr.Person.Name", "Peter");
exchange.getIn().setHeader("usr.Person.ID", "ABC123");

但是当我在 Active MQ 中看到它的格式为

usr_DOT_Person_DOT_Name: Peter
usr_DOT_Person_DOT_ID : ABC123

我需要按原样打印,我试图用谷歌搜索但没有运气。有什么建议吗??

【问题讨论】:

  • 我的回答是否解决了您的问题?如果是这样,请将其标记为正确,以帮助将来可能有相同问题的其他用户。如果不是,请澄清未解决的问题。谢谢!

标签: java spring-boot apache-camel activemq


【解决方案1】:

在消息头/属性的名称中使用. 字符违反了JMS 规范,这就是为什么Camel JMS 组件将其转换为DOT,如the documentation 中所述。阅读时可以随时将其翻译回原始格式。

【讨论】:

    【解决方案2】:

    来自骆驼的行动

    在 Camel 中,可以将标头命名为任何适合 Java 的名称 字符串,其值可以是任何 Java 对象。这提出了一些 发送到 JMS 目的地和从 JMS 目的地接收时出现问题。

    ... 任何 句点 (.) 字符被替换为 DOT,任何连字符 (-) 被替换为 替换为 连字符。例如,一个名为 org.apache.camel.Test-Header 将被转换为 org_DOT_apache_DOT_camel_DOT_Test_HYPHEN_Header 在被发送到 JMS 目的地。如果这条消息在某处被骆驼路由消费 指向下线,标题名称将被转换回来。

    您还可以在邮件标题映射部分的https://camel.apache.org/components/latest/jms-component.html 找到此信息。

    【讨论】:

      猜你喜欢
      • 2017-07-21
      • 1970-01-01
      • 2016-12-12
      • 2015-11-03
      • 2011-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多