0

我正在尝试使用 Message Broker,但我有一些问题。

1 我在消息代理上创建了一个队列,我可以通过 ESB 上的代理服务向消息代理添加新消息。但是,当我尝试在应用程序服务器上侦听此队列时,我无法在我的代码上获取队列连接工厂。如果我关注这个博客http://pzf.fremantle.org/2011/04/introduction-to-wso2-message-broker_05.html我可以从我的队列中获取消息。但我认为我不应该在我的代码上创建与消息代理的连接,我应该从应用程序服务器获取连接。所以我取消了 JMSListener 属性的注释,你可以在下面看到它。如果我尝试使用此代码从此处获取队列

Context initCtx = new InitialContext();
initCtx.lookup("myQueueConnectionFactory");

我收到javax.naming.NameNotFoundException: Name myQueueConnectionFactory is not bound in this Context 异常。您对从应用程序服务器获取连接有什么建议吗?

    <parameter locked="false" name="myTopicConnectionFactory">
        <parameter locked="false" name="java.naming.factory.initial">org.apache.qpid.jndi.PropertiesFileInitialContextFactory</parameter>
        <parameter locked="false" name="java.naming.provider.url">repository/conf/jndi.properties</parameter>
        <parameter locked="false" name="transport.jms.ConnectionFactoryJNDIName">TopicConnectionFactory</parameter>
        <parameter locked="false" name="transport.jms.ConnectionFactoryType">topic</parameter>
    </parameter>


    <parameter locked="false" name="myQueueConnectionFactory">
        <parameter locked="false" name="java.naming.factory.initial">org.apache.qpid.jndi.PropertiesFileInitialContextFactory</parameter>
        <parameter locked="false" name="java.naming.provider.url">repository/conf/jndi.properties</parameter>
        <parameter locked="false" name="transport.jms.ConnectionFactoryJNDIName">QueueConnectionFactory</parameter>
        <parameter locked="false" name="transport.jms.ConnectionFactoryType">queue</parameter>
    </parameter>

    <parameter name="default" locked="false">
        <parameter name="java.naming.factory.initial" locked="false">org.apache.qpid.jndi.PropertiesFileInitialContextFactory</parameter>
        <parameter name="java.naming.provider.url" locked="false">resources/jndi.properties</parameter>
        <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
        <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
    </parameter>

2 消息代理向订阅者发送队列项的次数。例如,消息代理将项目发送给订阅者,但订阅者无法完成这项工作。所以项目不会从消息代理队列中删除。它将何时再次尝试将此项目发送给订阅者以及尝试发送此项目到发送订阅者的次数。

谢谢,

4

1 回答 1

0

当您使用 ESB 将消息保存到队列时,您需要从端点 uri 配置中指定 ConnectionFactory,如下所示。

    <address uri="jms:/myQueueName?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&amp;java.naming.factory.initial=org.wso2.andes.jndi.PropertiesFileInitialContextFactory&amp;java.naming.provider.url=tcp://localhost:5672&amp;transport.jms.DestinationType=queue&amp;java.naming.provider.url=repository/conf/jndi.properties" statistics="enable"/>
于 2013-06-19T07:36:44.033 回答