wso2 EI 611 ActiveMQ

wso2 EI 611 ActiveMQ,wso2,activemq,wso2esb,Wso2,Activemq,Wso2esb,ESB中声明的消息存储 <?xml version="1.0" encoding="UTF-8"?> <messageStore class="org.apache.synapse.message.store.impl.jms.JmsStore" name="MySQLStockAdjustment" xmlns="http://ws.apache.org/ns/synapse"> <parameter name="store.jms.destination

ESB中声明的消息存储

<?xml version="1.0" encoding="UTF-8"?>
<messageStore class="org.apache.synapse.message.store.impl.jms.JmsStore" name="MySQLStockAdjustment" xmlns="http://ws.apache.org/ns/synapse">
    <parameter name="store.jms.destination">MySQLStockAdjustment</parameter>
    <parameter name="store.failover.message.store.name">MySQLStockAdjustmentFailover</parameter>
    <parameter name="store.jms.connection.factory">myQueueConnectionFactory</parameter>
    <parameter name="store.producer.guaranteed.delivery.enable">true</parameter>
    <parameter name="store.jms.cache.connection">false</parameter>
    <parameter name="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
    <parameter name="java.naming.provider.url">tcp://localhost:61616</parameter>
    <parameter name="store.jms.JMSSpecVersion">1.1</parameter>
</messageStore>
我看到消息以队列结尾,但我无法通过ActiveMQ web控制台读取它

我发现这可能是我需要解决的一个问题……如果在使用消息存储时使用ActiveMQ 5.12.2及更高版本,则需要在服务器启动时设置以下系统属性,以便ESB概要文件的JMS消息存储按预期工作

-Dorg.apache.activemq.SERIALIZABLE_包=*


但是我不知道怎么做。。。有人能帮我吗?

当您在定义messageStore并使用store mediator的JMS队列中存储消息时,您不仅存储来自消息的文本负载,而且整个java MessageContext对象被序列化并作为二进制消息存储在队列中

要读取这样的消息,需要使用消息处理器,而不能使用简单的JMS代理甚至JMS入站端点来读取


您不能用ActiveMQ控制台读取它,因为它不能反序列化它

,到目前为止,我发现错误在ActiveMQ和消息存储关系上。当我通过代理将消息直接放入队列时,它可以工作,但使用消息存储和使用API来放入消息却没有……我的问题是,如果我使用端点直接保存存储消息,并使用Im指向代理来使用该消息,它就可以工作。但当我按顺序存储消息时,只需简单地输入消息存储的名称,消息就被存储了,但在它之后,我的代理无法读取消息。。它给我的错误是“无法确定JMS消息的大小;不支持的消息类型:org.apache.activemq.command.ActiveMQObjectMessage“是,这是因为当您存储带有端点的消息时,您存储了文本负载。但是使用store mediator,您存储了一个序列化的java对象,该对象需要一个MessageProcessor进行反序列化:您不能用代理读取这样的消息……看看吧,看起来这样就很好了。。让我检查一下tonightERROR{org.apache.synapse.message.store.impl.jms.JmsConsumer}-[SalesOrder-C-1]无法从存储接收消息。错误:无法从内容生成正文。可序列化类对代理不可用。原因:java.lang.ClassNotFoundException:禁止类org.apache.synapse.message.store.impl.commons.StorableMessage!不信任将此类序列化为ObjectMessage负载。有关如何配置受信任类的更多信息,请参阅。{org.apache.synapse.message.store.impl.jms.JmsConsumer}
<?xml version="1.0" encoding="UTF-8"?>
<proxy name="stockAdjustment" startOnLoad="true" transports="jms" xmlns="http://ws.apache.org/ns/synapse">
    <target>
        <inSequence>
            <!--  get all data -->
            <sequence key="AdjustmentContext"/>
            <filter regex="MySQL" source="$ctx:StockSource">
                <then>
                    <iterate expression="//request">
                        <target>
                            <sequence>
                                <property expression="//qty" name="qty" scope="default" type="STRING"/>
                                <property expression="//code" name="code" scope="default" type="STRING"/>
                                <log level="custom">
                                    <property expression="fn:concat('parmams:Code: ' ,$ctx:code, ' ;Qty: ',$ctx:qty)" name="info"/>
                                </log>
                                <call blocking="true">
                                    <endpoint key="StockAdjustmentEp"/>
                                </call>
                            </sequence>
                        </target>
                    </iterate>
                </then>
                <else/>
            </filter>
        </inSequence>
        <outSequence>
            <send/>
        </outSequence>
        <faultSequence>

        </faultSequence>
    </target>
    <parameter name="transport.jms.Destination">MySQLStockAdjustment</parameter>
    <parameter name="transport.jms.ConnectionFactory">myQueueConnectionFactory</parameter>
</proxy> 
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
    <soapenv:Body>
        <StockAdjRequest>
            <source>MySQL</source>
            <request><qty>2</qty><code>PR2</code></request>
            <request><qty>2</qty><code>PR2</code></request>
            <request><qty>2</qty><code>PR2</code></request>
            </StockAdjRequest>
            </soapenv:Body>
            </soapenv:Envelope>