我正在尝试使用ESB和Message Broker设置以下方案。
流程1:
Client 1 Sends the message to ESB -> ESB consumes the message and stores it into the queue -> End of flow 1;
流程2:
Client 2 sends a request to ESB to get messages -> ESB gets the messages from the queue defined for Client 2 -> ESB sends back a pack of message that were present in the queue
虽然实现Flow 1没有问题。文档和示例涉及存储和转发模式,因此我没有看到任何关于根据客户请求消费消息的实例 - “存储和拉取”模型。
有人可以提出建议吗?
参考链接: http://docs.wso2.org/wiki/display/ESB460/Sample+702%3A+Introduction+to+Message+Forwarding+Processor
http://docs.wso2.org/wiki/display/MB201/Integrating+WSO2+ESB
最诚挚的问候, 弗拉基米尔。
答案 0 :(得分:0)
您可以参考以下网址:http://wso2.org/library/articles/2013/03/configuring-wso2-esb-wso2-message-broker
我也对Flow 2感到震惊。我无法通过我的代理从mesaagebroker获取数据
答案 1 :(得分:0)
首先,您需要将消息保存在队列中
<address uri="jms:/Queue1?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.factory.initial=org.wso2.andes.jndi.PropertiesFileInitialContextFactory&java.naming.provider.url=tcp://localhost:5672&transport.jms.DestinationType=queue&java.naming.provider.url=repository/conf/jndi.properties" statistics="disable"/>
您需要在repository / conf / jndi.properties中指定队列名称,如此处所述 http://docs.wso2.org/wiki/display/MB201/Integrating+WSO2+ESB
然后,您可以定义具有相同JMS队列名称的代理来使用该队列
<proxy xmlns="http://ws.apache.org/ns/synapse" name="Queue1" transports="jms" startOnLoad="true" trace="disable" statistics="disable">
<target inSequence="your_in_sequence" outSequence="your_out_sequence" faultSequence="your_fault_sequence"/>
<parameter name="transport.jms.ContentType">
<rules>
<jmsProperty>contentType</jmsProperty>
<default>application/xml</default>
</rules>
</parameter>
</proxy>
您可以使用此代理服务来使用您用于保存邮件的队列
答案 2 :(得分:0)
这更像是一个自定义要求。您可以使用自定义类介体或连接器来实现此目的。 [1]
[1] https://docs.wso2.com/display/ESB481/Creating+a+Connector