我有一个带有巨大负载的入站org.mule.api.MuleMessage。有效负载需要根据某些逻辑进行拆分。使用拆分有效负载我形成org.mule.api.MuleMessage的列表,其中每个消息中具有相同的头但具有不同的有效负载。我需要将列表中的每条消息作为单独的消息发送到出站队列中 我正在使用< collection-splitter>,但它给了我以下错误:
org.mule.api.transformer.TransformerMessagingException:传递给StreamMessage的类型无效:DefaultMuleMessage。允许的类型是:Boolean Byte Short Character Integer Long Float DoubleString和byte [](javax.jms.MessageFormatException)(org.mule.api.transformer.TransformerException)。消息有效内容的类型为:ArrayList
我使用以下配置:
<flow name="Inbound flow">
<inbound-endpoint ref="In" />
<pooled-component>
<spring-object bean="inboundAdapterProcessor" />
<pooling-profile initialisationPolicy="INITIALISE_ALL" maxActive="${component.maxActive}" />
</pooled-component>
<collection-splitter enableCorrelation="IF_NOT_SET" />
<outbound-endpoint ref="Out"/>
</flow>
&#34;在&#34;和&#34; Out&#34;只不过是jms队列端点。
Java代码:
public Object onCall(MuleEventContext eventContext) throws Exception {
List<MuleMessage> messages = new ArrayList<MuleMessage>();
MuleMessage message = eventContext.getMessage();
String payload = message.getPayloadAsString();
//split the payload based on some logic
String[] payloads = getSplitPayload(payload);
int i= 0;
while(i<payloads.lenght){
//create DefaultMuleMessage here
MuleMessage splitMessage = new DefaultMuleMessage(/*passing appropriate params here*/);
//set the same headers
//set the payload
splitMessage.setPaylod(payloads[i]);
messages.add(splitMessage);
}
return messages;
}
请告知。非常感谢您的帮助。谢谢。
答案 0 :(得分:2)
<object-to-byte-array-transformer />
会使任何可序列化的对象都可以通过JMS发送 - 请不要忘记在收到时将其转换回<byte-array-to-object-transformer />
。