2017-10-17 189 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> 

請注意,您必須在隊列級別而不是名稱空間級別定義策略,並且隊列在創建時不得分區。

我希望這會幫助你們中的一些人。