2017-10-17 147 views
0

这里是我的情况:配置WSO2 4.8.1与天青ServiceBus队列

我已经在我的WSO2 ESB 4.8.1配置messageStore如下:

<messageStore class="org.apache.synapse.message.store.impl.jms.JmsStore" name="JMSTest"> 
    <parameter name="java.naming.factory.initial">org.apache.qpid.amqp_1_0.jms.jndi.PropertiesFileInitialContextFactory</parameter> 
    <parameter name="java.naming.provider.url">repository/conf/jms-jndi.properties</parameter> 
    <parameter name="store.jms.connection.factory">JMSMS</parameter> 
    <parameter name="store.jms.JMSSpecVersion">1.1</parameter> 
    <parameter name="store.jms.destination">QUEUE</parameter> 
</messageStore>  

我跟此指示的配置official tutorial连接队列。

第一次尝试使用此存储器存储消息时,会引发错误并忽略该消息。

[JMSTest-P-1]。忽略消息ID:urn:uuid:414f50a0-91d2-4bdf-937b-cc283985c947 [JMSTest-P-1]无法继续。消息生产者为空。

如果我在接下来的5分钟内尝试存储邮件,则该商店将工作。但在这种超时之后,如果我尝试存储消息,则会触发相同的错误。

我已经尽力了store.jms.cache.connection参数添加到false,并通过编辑管理控制台sourceViewtransport.jms.CacheLevel参数None,但如果我修改配置在MessageStore标签因此我并不对这些参数将被删除他们真的被使用了。

你有没有想过要创建一个外观,以便messageStore始终处于活动状态?

感谢您对所有的答案

回答

1

我能够通过降级使用的qpid库来解决我的“超时”的问题。

在官方的Azure教程中,没有指定qpid版本,所以我选择了最新版本(qpid 0.32)。不要做。 随着qpid 0.26和相同的配置问题消失。 对于qpid 0.30

下面我lib目录复制到与Azure的服务总线队列设置WSO2 ESB的罐子发生同样的错误信息,而我的conf文件的内容:

< ESB_HOME> /存储库/组件/ LIB/

geronimo-jms_1.1_spec-1.0.jar 
qpid-amqp-1-0-client-0.26.jar 
qpid-amqp-1-0-client-jms-0.26.jar 
qpid-amqp-1-0-common-0.26.jar 

< ESB_HOME> /repository/conf/jms-jndi.properties

connectionfactory.JMSMS = amqps://<POLICY_NAME>:<BASE64_ENCODE_POLICY_KEY>@<NAMESPACE>.servicebus.windows.net 
queue.QUEUE = <QUEUE_NAME> 

请注意,您必须在队列级别而不是名称空间级别定义策略,并且队列在创建时不得分区。

我希望这会帮助你们中的一些人。