2012-08-02 56 views
0

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

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:名称myQueueConnectionFactory是在此方面不例外约束。你有什么建议从应用服务器获得连接。

<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多少次,消息代理发送队列项目用户。例如,消息代理将项目发送给订阅者,并且不知何故订阅者无法完成该作业。所以项目不会从消息代理队列中删除。它何时会尝试再次将该项目发送给订阅者,并尝试将此项目发送给订阅者多少次。

感谢,

回答

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"/> 
相关问题