我正在尝试使用Message Broker,但我有一些问题。
1我在消息代理上创建了一个队列,我可以在ESB上使用代理服务向消息代理添加新消息。但是,当我尝试在Application Server上侦听此队列时,我的代码上无法获得队列连接工厂。如果我关注此博客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未绑定在此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消息代理向订户发送队列项的次数。例如,消息代理向订户发送项目,并且某种方式订阅者无法完成该作业。因此,不会从消息代理队列中删除该项。何时会尝试再次将此项目发送给订阅者以及尝试将此项目发送给发送订阅者的次数。
谢谢,
答案 0 :(得分:0)
使用ESB将消息保存到队列时,需要从端点uri配置中指定ConnectionFactory,如下所示。
<address uri="jms:/myQueueName?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="enable"/>