簡體   English   中英

Weblogic JMS異常055167“不能支持多個同步消息預取使用者。”

[英]Weblogic JMS Exception 055167 “cannot support more than one synchronous message-prefetching consumer.”

這是什么意思?

我繼承了一個集成測試失敗的復雜Java庫。 該庫使用一般的發布/訂閱范例,但是我必須承認,對於任何Weblogic / JMS / Spring東西,我都沒有經驗。 該測試應用程序在一台服務器上運行,並通過JNI從C ++調用Java,然后通過fork(通過JNI / Java發布)啟動子發布者進程。 主應用程序是通過Spring配置的,並與安裝在另一台服務器上的Weblogic JMS通信(Weblogic JMS服務器由我們項目中的另一組控制)。 我設法打開spring jms調試,這很有幫助。 因此,我的日志文件向我顯示了一系列事件,如下所示:

(My App) Publishing...
org.springframework.jms.connection.CachingConnectionFactory Creating cached JMS MessageProducer for destination [MY-JMS-Module!DataTest2]: weblogic.jms.client.WLProducerImpl@7b9a29
...
(My App) Publishing...
org.springframework.jms.connection.CachingConnectionFactory Found cached JMS MessageProducer for destination [MY-JMS-Module!DataTest2]: weblogic.jms.client.WLProducerImpl@7b9a29
...
(My App) Publishing...
org.springframework.jms.connection.CachingConnectionFactory Found cached JMS MessageProducer for destination [MY-JMS-Module!DataTest2]: weblogic.jms.client.WLProducerImpl@7b9a29
...
(My App) Subscribing to DataTest2
org.springframework.jndi.JndiTemplate Looking up JNDI object with name [DataTest2]
(My App) Launching publisher process...
org.springframework.jms.support.destination.JndiDestinationResolver Located object with JNDI name [DataTest2]
org.springframework.jms.connection.CachingConnectionFactory Creating cached JMS MessageConsumer for destination [MY-JMS-Module!DataTest2]: weblogic.jms.client.WLConsumerImpl@5e3eed51

(My App) Publishing....
org.springframework.jms.connection.CachingConnectionFactory Creating cached JMS MessageProducer for destination [MY-JMS-Module!DataTest2]
...
WARN 2011-11-14 22:01:00,421 org.springframework.jms.listener.DefaultMessageListenerContainer Setup of JMS message listener invoker failed for destination 'DataTest2' - trying to recover. Cause: [JMSClientExceptions:055167]Single session cannot support more than one synchronous message-prefetching consumer.

java.lang.UnsupportedOperationException: [JMSClientExceptions:055167]Single session cannot support more than one synchronous message-prefetching consumer.
    at weblogic.jms.client.JMSConsumer.receiveInternal(JMSConsumer.java:587)
    at weblogic.jms.client.JMSConsumer.receive(JMSConsumer.java:526)
    at weblogic.jms.client.WLConsumerImpl.receive(WLConsumerImpl.java:184)
    at org.springframework.jms.connection.CachedMessageConsumer.receive(CachedMessageConsumer.java:74)
    at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveMessage(AbstractPollingMessageListenerContainer.java:429)
    at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:310)
    at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:263)
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1058)
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1050)
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:947)
    at java.lang.Thread.run(Thread.java:636)

我當然希望我現在可以訪問Weblogic JMS源代碼來消除該異常。 任何幫助或建議,將不勝感激。 就像我說的那樣,代碼有點復雜,因此我不確定我能否提供比上面截斷的日志更多的信息,而不必將其變成新穎的東西。

TL; DR版本

嘗試在Weblogic管理控制台中為其中一個JMS連接工廠禁用消息預取。

長版

希望這會有所幫助,因為我對Weblogic的這一方面並不完全熟悉。

基本入門是Oracle文檔中的此流程圖。

您所獲得的日志消息顯示了查找連接工廠JNDI,創建連接,從該連接創建會話,查找目標JNDI,注冊消費者和生產者時發生的基本事件。

之后,當意識到有多個啟用了預取功能的使用者時,它似乎就失敗了。

此預取是Synchronous Consumer的屬性, 它可以預取成批消息以提高性能 請參閱標題為“使用預取模式創建同步消息管道”的章節。

在管理控制台中,嘗試將“同步使用方的預取模式”設置為“已禁用”

我遇到的其他文檔是錯誤代碼說明

BEA-055167錯誤:單個會話不能支持多個同步的消息預取使用者。

描述

單個會話不能支持多個同步消息預取使用者。

原因-另一個打開的同步消息預取使用者。

行動-關閉另一個同步消息預取使用者。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM