1

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

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

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

4

2 回答 2

2

在消息头/属性的名称中使用字符是违反 JMS 规范的,.这就是 Camel JMS 组件将其转换DOT文档中所述的原因。阅读时,您始终可以将其翻译回原始格式。

于 2020-02-24T04:22:44.463 回答
0

来自骆驼的行动

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

...任何句点 (.) 字符都替换为DOT,任何连字符 (-) 都替换为HYPHEN。例如,名为 org.apache.camel.Test-Header 的标头将在发送到 JMS 目标之前转换为 org_DOT_apache_DOT_camel_DOT_Test_HYPHEN_Header。如果这条消息在某个点被 Camel 路由消费,则标头名称将被转换回来。

您也可以在 MESSAGE HEADER MAPPING 部分的https://camel.apache.org/components/latest/jms-component.html找到此信息。

于 2020-02-24T04:45:48.990 回答