如何通过message-processo wso2 esb从内存中的消息存储中读取消息

时间:2018-05-28 09:36:19

标签: wso2 wso2esb

我已将消息存储在内存中的消息存储区(wso2 esb)中。 如何从内存中的消息存储中读取消息。

1 个答案:

答案 0 :(得分:0)

您需要使用MessageProcessor来解决您的任务。

https://docs.wso2.com/display/ESB490/Adding+a+Message+Processor

所以你可以把它发送到" sequence"通过"样品处理器"或者通过"计划处理器"

我在下面写了wso2esb / wso2ei的配置。然后,您可以在浏览器中调用网址http://127.0.0.1:8280/test/store。 它的工作原理如下:

api test - >在MemoryStore中存储消息

Processor TestProcessor - >每200ms发送一次消息给TestSequence序列

TestSequence - >将消息和环回响应转换为api的outSequence

<messageStore name="TestStore"/>
<api context="/test" name="test">
    <resource methods="GET" uri-template="/store">
        <inSequence>
            <payloadFactory media-type="xml">
                <format>
                    <a xmlns="">1</a>
                </format>
                <args/>
            </payloadFactory>
            <store messageStore="TestStore"/>
        </inSequence>
        <outSequence>
            <send/>
        </outSequence>
    </resource>
</api>
<messageProcessor  class="org.apache.synapse.message.processor.impl.sampler.SamplingProcessor"
    messageStore="TestStore" name="TestProcessor">
    <parameter name="sequence">TestSequence</parameter>
    <parameter name="interval">200</parameter>
    <parameter name="is.active">true</parameter>
    <parameter name="concurrency">1</parameter>
</messageProcessor>
<sequence name="TestSequence">
    <payloadFactory media-type="xml">
        <format>
            <b xmlns="">$1</b>
        </format>
        <args>
            <arg evaluator="xml"
                expression="//*[local-name()='a']/text()" xmlns:ns="http://org.apache.synapse/xsd"/>
        </args>
    </payloadFactory>
    <property name="messageType" scope="axis2" type="STRING" value="application/xml"/>
    <loopback/>
</sequence>