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 broker manager console的图片中显示:
参考代码如下: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();
}
}
Type
,但不是我想要的 _头部_。我猜我的回答不够清晰,所以我稍微更新了一下。 - Destyinbound-endpoint
,我可以获取属性。但是已经存在的消费ActiveMQ队列的服务不是用Mule构建的,而是一个旧的.Net应用程序,它期望填充Type _header_。不幸的是,由于这部分是专有的,我无法访问ActiveMQ消费源代码,因此我想设置JMS消息的头。 - Desty