gpt4 book ai didi

jms - 如何在 Mule 中设置 ActiveMQ 消息头?

转载 作者:行者123 更新时间:2023-12-04 23:52:14 26 4
gpt4 key购买 nike

我正在使用 MuleStudio 3.5.0 并尝试创建一个将消息发送到 ActiveMQ 队列的流。该队列由我想集成到我的工作流程中的旧现有服务(用 .Net 编写)使用。该服务需要消息的header Type 设置为“DoStuff”。我怎样才能做到这一点?

我尝试了以下流程。请注意,出于测试目的,我通过 DoStuff 类手动设置 ActiveMQ 消息的有效负载,HTTP 连接器仅用于触发工作流:

<jms:activemq-connector name="Active_MQ" brokerURL="tcp://localhost:61616" validateConnections="true" doc:name="Active MQ"/>
<spring:beans>
<spring:bean id="DoStuffBean" name="DoStuffBean" class="foo.DoStuff"/>
</spring:beans>
<flow name="Flow1" doc:name="Flow1">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8199" path="activemq" doc:name="HTTP"/>
<component doc:name="Java" class="com.kws.mule.DoStuff"/>
<json:object-to-json-transformer doc:name="Object to JSON"/>
<jms:outbound-endpoint queue="MyServiceQueue" connector-ref="Active_MQ" doc:name="JMS">
<jms:object-to-jmsmessage-transformer name="ObjectToJmsMessage" />
<message-properties-transformer>
<add-message-property key="Type" value="DoStuff" />
</message-properties-transformer>
</jms:outbound-endpoint>
</flow>

但这不起作用,因为设置的不是header Type,而是一个属性。这在 ActiveMQ 代理管理器控制台 的图像中显示:

The property Type is set, but not the header

此处供引用的是 DoStuff 类:

public class DoStuff implements Callable {
private String jobId;
private String createdTime;

public String getJobId()
{
return this.jobId;
}

public String getResult()
{
return this.createdTime;
}

@Override
public Object onCall(MuleEventContext eventContext) throws Exception {
DoStuff result = new DoStuff();
result.jobId = "abd4df7b-0f31-41b4-826a-3dbbe77df7eb";
result.createdTime = "0001-01-01T00:00:00";

eventContext.getMessage().setPayload(result);
return eventContext.getMessage();
}
}

最佳答案

此流程应该有效:

<flow name="Flow1" doc:name="Flow1">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8199" path="activemq" doc:name="HTTP"/>
<component doc:name="Java" class="com.kws.mule.DoStuff"/>
<json:object-to-json-transformer doc:name="Object to JSON"/>
<jms:outbound-endpoint queue="MyServiceQueue" connector-ref="Active_MQ" doc:name="JMS">
<jms:object-to-jmsmessage-transformer name="ObjectToJmsMessage" />
<expression-transformer returnSourceIfNull="true"
doc:name="Expression"
expression="#[payload.setJMSType(&quot;DoStuff&quot;); return payload]" />
</jms:outbound-endpoint>
</flow>

关于jms - 如何在 Mule 中设置 ActiveMQ 消息头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23568569/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com