我有一个出站和入站 JMS 组件,每当消息通过它时,我都会自动丢失所有标头属性,因此基本上只发送消息有效负载。
你们建议我做什么?通过消息将变量作为 JMS 属性发送?
谢谢。
Inbound
属性不会跨传输传播。除非您明确复制它们,否则您将丢失它们。
Outbound
当您将出站请求发送到 JMS 队列(或任何其他传输)时,属性将被复制并作为入站属性接收。
当您收到入站请求并且现在意图是将属性传播到出站端点时,显式复制您想要的属性或执行快捷步骤并在入站端点之后复制所有类似这样的属性。
<flow name="flowName">
<jms:inbound-endpoint queue="queueName" exchange-pattern="one-way" />
<copy-properties propertyName="*" />
.....
</flow>
这将
<copy-properties propertyName="*" />
将传入的入站属性复制flowName
到出站属性。
还要确保您正确访问属性。
访问入站属性: #[message.inboundProperties['propertyName']]
访问出站属性:#[message.outboundProperties['propertyName']]
Invocation
变量被限制在流中。
当消息通过端点时,所有入站属性和调用变量都会丢失。仅携带出站属性和会话变量。
所有出站属性都将在接收端作为入站属性提供。