WSO2 ESB和MB消息存储库丢失消息正文

时间:2013-10-27 15:44:09

标签: wso2 message wso2esb messagebroker wso2mb

我正按照此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中恢复它?

非常感谢

1 个答案:

答案 0 :(得分:2)

“消息存储”不会保留消息,因为它在JMS队列中。它将消息和其他信息序列化为java序列化对象并将其放入JMS队列。当“消息处理器”处理消息时,它从JMS队列中提取消息并反序列化java序列化对象以进一步处理。

此处MB用作JMS队列。所以Message Store序列化并放入MB队列。所以你看到序列化java对象。如果您使用邮件存储,则无法以MB格式查看内容。