【问题标题】:How to set dynamic for queue, endpoint and message-processor in wso2 ESB如何在 wso2 ESB 中为队列、端点和消息处理器设置动态
【发布时间】:2017-02-06 18:18:00
【问题描述】:

我有一个表,我的程序在循环中读取表,同时调用 URL,当调用完成时,我将状态设置为 OK。由其他程序插入到该表中,并且链接列不是恒定的。表格如下:

    Id   link                        status
==============================================
    1 | 192.168.0.1/adduser?id=1  |
    2 | 192.168.0.2/adduser?id=2  |
    3 | 10.0.0.1/getinfo?id=1      |
    4 | 192.168.0.1/deleteuser?id=10  |

所以我想用队列、端点和消息处理器来实现每条记录。 例如: 消息处理器1(队列1,端点1)

endpoint1="192.168.0.1"

消息处理器2(队列2,端点2)

endpoint2="192.168.0.2"

消息处理器3(队列3,端点3)

endpoint3="10.0.0.1"

....

我没有定义静态解决方案的问题,但我不知道动态定义队列、端点和消息处理器,因为表中的新行将有新链接,我不喜欢之前定义。 谢谢。

【问题讨论】:

    标签: web-services wso2esb


    【解决方案1】:

    不确定我是否正确,但您可以通过在发送前设置“TO”标头来设置要将数据发送到的队列。下面是一个例子。

    <header xmlns:ns="http://org.apache.synapse/xsd" name="To" expression="concat('jms:/',get-property('queueToSend'), '?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&amp;java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;java.naming.provider.url=failover:(tcp://server1:port,tcp://server2:port)&amp;transport.jms.DestinationType=queue&amp;transport.jms.UserName=queuUser&amp;transport.jms.Password=queuePass')"></header>
      <send></send>
    

    【讨论】:

    • 谢谢。那么如何检查队列名称是否存在?
    • 取决于您的经纪人,例如如果您使用 ActiveMQ,则当 esb 不存在时,该队列将在运行时创建。我认为您必须授予您在 esb 中使用的用户连接到代理的权限,以在您的代理配置中创建队列。如果队列不存在,esb 将创建该队列
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    相关资源
    最近更新 更多