我正按照此URL上的说明,试图正视WSO2 ESB 4.7.0和WSO2 MB 2.1.0之间的集成: http://docs.wso2.org/display/MB210/Integrating+WSO2+ESB
特别是我想将消息存储用作队列。所以我遵循以下段落:“使用消息存储和处理器集成”。
我创建了消息存储和消息处理器,之前已经配置好了ESB和MB。 最后我写了这个代理:
<proxy xmlns="http://ws.apache.org/ns/synapse" name="MessageStoreQueueProxy"
transports="https,http"
statistics="disable"
trace="disable"
startOnLoad="true">
<target>
<inSequence>
<send>
<endpoint>
<address uri="http://localhost:8080/RestService/rest/servizio"/>
</endpoint>
</send>
</inSequence>
<outSequence>
<send/>
<property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"/>
<property name="OUT_ONLY" value="true"/>
<store messageStore="JMSMS"/>
<log level="full"/>
</outSequence>
</target>
<description/>
</proxy>
当我的客户端调用MessageStoreQueueProxy服务时,在Message Broker上我可以看到“JMSMS消息存储”计数器正确增加但是,当我查看每条消息的“内容类型”字段时,我只看到“Java” MessageObject图标“,而在”正文字段“中,我只能读取”不支持“值。
另一方面,如果我在ESB中浏览JMSMS“消息存储”,我可以看到消息的信封看起来像这样:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<root>
<code>ok</code>
<documentID>2546</documentID>
</root>
</soapenv:Body>
</soapenv:Envelope>
那么为什么在交易过程中尸体丢失了?我怎么能保持身体?或者如何从WSO2 MB中的ObjectMessage中恢复它?
非常感谢
答案 0 :(得分:2)
“消息存储”不会保留消息,因为它在JMS队列中。它将消息和其他信息序列化为java序列化对象并将其放入JMS队列。当“消息处理器”处理消息时,它从JMS队列中提取消息并反序列化java序列化对象以进一步处理。
此处MB用作JMS队列。所以Message Store序列化并放入MB队列。所以你看到序列化java对象。如果您使用邮件存储,则无法以MB格式查看内容。