308.7. 其他备注
308.7.1. Message Header Format
SJMS2 组件使用与 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
,以下规则适用于标头值:
308.7.2. Message Content
若要通过线线提供内容,我们必须确保传输的消息正文遵循 JMS Message Specification。因此,生成的所有操作都必须是原语或其计数器对象(如 Integer
、Long
、Character
)。type, String
,CharSequence
,Date
,BigDecimal
和 BigInteger
都转换为它们的 toString ()
表示。所有其他类型都将被丢弃。
308.7.3. 集群
在集群环境中使用 InOut 和 SJMS2 时,您必须使用 TemporaryQueue 目的地,或使用每个 InOut producer 端点的唯一命名回复。消息关联由端点处理,而不是与代理中的消息选择器处理。InOut Producer Endpoint 使用由 Message JMSCorrelationID
缓存的 Java Concurrency Exchangers。这提供了在减少代理的开销时的一个 nice 性能,因为所有消息都会按照感兴趣的消费者产生的顺序使用。
目前,唯一的关联策略是使用 JMSCorrelationId
。InOut Consumer 使用这个策略,同时确保对所含的 JMSReplyTo
目的地的所有响应消息也都会从请求中复制了 JMSCorrelationId
。