307.7. 其他备注
307.7.1. Message Header Format
SJMS 组件使用与 Camel JMS 组件中使用的相同标头格式策略。此插件策略确保通过线路发送的消息符合 JMS Message spec。
对于 exchange.in.header
,以下规则适用于标头键:
-
从
JMS
或JMSX
开始的密钥被保留。 -
exchange.in.headers
键必须是 literals,且所有是有效的 Java 标识符(不要在键名称中使用点)。 在消耗 JMS 消息时,Camel 替换了点和连字符以及反向:
- 在 Camel 使用消息时,由 DOT 和反向替换替换。
-
在 Camel 使用消息时,由 HYPHEN 替换为 HYPHEN,反向替换。
另请参阅jmsKeyFormatStrategy
选项,它允许使用您自己的自定义策略格式化密钥。
对于 exchange.in.header
,以下规则适用于标头值:
307.7.2. Message Content
若要通过线线提供内容,我们必须确保传输的消息正文遵循 JMS Message Specification。因此,生成的所有操作都必须是原语或其计数器对象(如 Integer
、Long
、Character
)。type, String
,CharSequence
,Date
,BigDecimal
和 BigInteger
都转换为它们的 toString ()
表示。所有其他类型都将被丢弃。
307.7.3. 集群
在集群环境中使用 InOut with SJMS 时,您必须使用 TemporaryQueue 目的地,或使用每个 InOut producer 端点的唯一命名回复。消息关联由端点处理,而不是与代理中的消息选择器处理。InOut Producer Endpoint 使用由 Message JMSCorrelationID
缓存的 Java Concurrency Exchangers。这提供了在减少代理的开销时的一个 nice 性能,因为所有消息都会按照感兴趣的消费者产生的顺序使用。
目前,唯一的关联策略是使用 JMSCorrelationId
。InOut Consumer 使用这个策略,同时确保对所含的 JMSReplyTo
目的地的所有响应消息也都会从请求中复制了 JMSCorrelationId
。