首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wso2 EI 611 ActiveMQ

wso2 EI 611 ActiveMQ
EN

Stack Overflow用户
提问于 2018-02-10 14:10:27
回答 1查看 334关注 0票数 0

ESB中声明的消息存储

代码语言:javascript
复制
<?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>

我只想开始在其中存储消息,然后使用代理从其中读取消息。

代理很简单

代码语言:javascript
复制
<?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> 

因此,当我通过Postman发送数据消息时,我得到了以下信息:

警告{ JMS }-无法确定JMS消息的大小;不支持的消息类型: org.apache.activemq.command.ActiveMQObjectMessage {org.apache.axis2.transport.jms.JMSUtils} ERROR {org.apache.axis2.transport.base.BaseUtils} -不支持的JMS消息类型org.apache.activemq.command.ActiveMQObjectMessage {org.apache.axis2.transport.base.BaseUtils} ERROR org.apache.activemq.command.ActiveMQObjectMessage{org.apache.axis2.transport.base.BaseUtils} error WARN -处理消息{org.apache.axis2.transport.jms.JMSMessageReceiver}时出现未知错误

消息是

代码语言:javascript
复制
<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>

我看到消息在队列中结束,但我无法通过ActiveMQ web控制台读取它……

当使用消息存储库时,您需要在服务器启动时设置以下系统属性,以使ActiveMQ配置文件的ActiveMQ消息存储库能够按预期工作。

-Dorg.apache.activemq.SERIALIZABLE_PACKAGES="*“...”

BUt我不知道该怎么做……有人能帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2018-02-12 15:30:26

当您在定义messageStore并使用存储中介器的JMS队列中存储消息时,您不仅存储消息中的“文本”有效负载,而且整个java MessageContext对象都被序列化并作为二进制消息存储在队列中。

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

而且您无法使用ActiveMQ控制台读取它,因为它无法对其进行反序列化

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48717825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档