【问题标题】:is it possible for WSO2 ESB to send JMS messages between JMS brokers?WSO2 ESB 是否可以在 JMS 代理之间发送 JMS 消息?
【发布时间】:2013-06-25 04:28:51
【问题描述】:

我有一个服务正在侦听一个队列,我想将消息转发给一个完全不同的代理。这在 WSO2 ESB 中是否可行,如果可以,如何完成此配置?我尝试使用其他代理的传输 url 指定端点,但这不起作用...

【问题讨论】:

    标签: jms wso2 activemq wso2esb


    【解决方案1】:

    这是我用来从 JMS 队列中挑选并发布到另一个队列(在 ActiveMQ JMS 提供程序上)的 WSO2 ESB 代理服务配置:

    <proxy xmlns="http://ws.apache.org/ns/synapse" name="JMS_to_JMS_proxy_service" transports="jms" statistics="disable" trace="disable" startOnLoad="true">
       <target>
          <inSequence>
             <log level="full" separator="," />
             <property name="OUT_ONLY" value="true" scope="default" type="STRING" />
             <send>
                <endpoint>
                   <address uri="jms:/Destination_Queue_Name?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&amp;java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;java.naming.provider.url=tcp://Your_Host:61616&amp;transport.jms.DestinationType=queue" trace="disable">
                      <timeout>
                         <duration>30000</duration>
                         <responseAction>fault</responseAction>
                      </timeout>
                      <suspendOnFailure>
                         <initialDuration>0</initialDuration>
                         <progressionFactor>1.0</progressionFactor>
                         <maximumDuration>0</maximumDuration>
                      </suspendOnFailure>
                   </address>
                </endpoint>
             </send>
          </inSequence>
       </target>
       <parameter name="transport.jms.ContentType">
          <rules>                              
             <jmsProperty>contentType</jmsProperty>                              
             <default>text/plain; charset=ISO-8859-1</default>                    
          </rules>
       </parameter>
       <parameter name="transport.jms.ConnectionFactory">myQueueConnectionFactory</parameter>
       <parameter name="transport.jms.DestinationType">queue</parameter>
       <parameter name="transport.jms.Destination">Source_Queue_Name</parameter>
    </proxy>                                
    

    不要忘记在配置 -> 传输菜单下启用 JMS 传输发送器。此外,myQueueConnectionFactory 指的是 Configure -> Transports -> JMS Transport Listener 下的参数集。

    更新:较新版本的 WSO2 ESB 将没有用于启用/禁用传输的 GUI 选项。为此,您必须修改 {ESB_ROOT_DIRECTORY}/repository/conf/axis2/axis2.xml 文件并取消注释与您的环境相对应的 JMSListener/JMSSender(ActiveMQ、WSO2 MB、等等)

    【讨论】:

    • 这实际上是在两个不同的 activemq 代理之间发送流量吗?
    • 是的,源队列位于 JMS Transport Listener 的 myQueueConnectionFactory 参数下配置的 ActiveMQ 实例上,而目标队列位于端点的 address urijava.naming.provider.url 参数下定义的 ActiveMQ 实例上.
    • 我一定是在某处遗漏了一些配置,因为当我这样做时,我得到了与以前相同的行为,消息发送到代理服务正在侦听的代理...你的连接工厂参数部分的配置中定义了不同的代理?
    • 您的默认设置是否可能不同?
    • 现在可以使用了。结果我们定义了一个默认的 transportSender,如果我们计划使用这个配置,我们不应该有。谢谢!
    猜你喜欢
    • 2013-08-09
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-18
    相关资源
    最近更新 更多