我已将消息存储在内存中的消息存储区(wso2 esb)中。 如何从内存中的消息存储中读取消息。
答案 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>