2013-05-28 180 views
2

在Weblogic OSB中,我們有一個代理服務,它只需要使用來自遠程Weblogic JMS隊列的消息,並通過業務服務將它們路由到另一個遠程Weblogic JMS隊列。出於某種原因,郵件被代理服務佔用,但它們從未被路由到業務服務。OSB代理服務消息處理

當前行爲:

啓用時,OSB代理服務去除放置在遠程端點URI隊列中的任何消息,但消息似乎不是代理服務的消息內流動流本身。啓用代理服務時,遠程隊列中的消息將被刪除,但會被視爲處於「掛起」狀態。當代理服務被禁用時,消息被放回隊列中。

爲什麼消息在代理服務的消息流中不能被處理的原因是什麼?所有的消息流都是將消息路由到業務服務,然後將這些消息發送到另一個遠程端點URI隊列。 PS:當通過測試控制檯將消息注入代理服務時,消息流向Business Service的流程/路由沒有問題,因此我認爲問題必須出現在初始遠程隊列/代理服務接口的某處?也許權限或交易相關的問題?但我無法看到配置或服務器日誌中的任何錯誤提示...

在此先感謝您的任何幫助。

+1

在OSB控制檯中轉到相關代理,單擊「操作設置」選項卡並打開跟蹤選項。也許這將幫助你獲得一些日誌來確定發生了什麼?您也可以爲商業服務做到這一點。 –

+0

@better_use_mkstemp,感謝您的建議。我相信我已經啓用了跟蹤功能,但是當代理服務啓用時我沒有看到任何記錄,並從遠程隊列中刪除了一條消息。我是否認爲跟蹤日誌應該寫入OSB服務器的標準日誌文件?或者我在錯誤的地方尋找痕跡? –

+0

您應該能夠找到正在運行的代理服務器的日誌,並查看如下消息:「[OSB Tracing]使用消息上下文路由到/services/enterprise/DataService/v2.0.0/DataServiceBusiness:」,然後稍後「[OSB Tracing]將更改以下變量:」或「[OSB Tracing]發送入站響應」確保它是受管服務器日誌,而不是其他變量。類似於/servers/<受管服務器名稱>/logs –

回答

0

在您的代理服務中,轉到操作設置選項卡,並確保已啓用日誌記錄啓用跟蹤調試。追查應設置爲完全和尺寸爲800

問候 賽義德ķ

-1

您可以設置「最大消息每次會話」的JMS連接工廠的屬性:默認爲10,將其設置爲1〜每次只向每位消費者傳遞1條JMS消息。默認行爲是多達10條消息被傳遞給同一個使用者,只有1個線程,因此所有10個消息都被標記爲待處理,而僅處理1個消息。

2

我遇到了同樣的問題,並發現它可能是一個命名衝突問題。

如果您的資源具有重複的名稱,而不管它們在哪個服務器上,WebLogic可能會產生意外的行爲。因此,根據Oracle的文檔Best Practices for JMS Beginners and Advanced Users,你應該遵循以下的命名規則:

  • 域名必須是唯一的。
  • WebLogic服務器名稱必須是唯一的,即使它們位於兩個不同的域中。
  • JMS服務器名稱必須是唯一的,即使它們位於兩個不同的域中。

舉例說明發布上述聲明的情況。我有以下有問題的拓撲結構:

| WebLogic | IP   | Domain  | Server  | 
| WebLogic 1 | 10.10.10.73 | osb_domain | osb_server1 | 
| WebLogic 2 | 10.10.10.83 | osb_domain | osb_server1 | 
| WebLogic 3 | 10.10.10.93 | osb_domain | osb_server1 | 

請注意域和服務器之間的名稱衝突。即使我的JMS資源名稱不同,這些命名衝突也足以導致問題。

然後,我改變了我的拓撲結構如下:

| WebLogic | IP   | Domain  | Server  | 
| WebLogic 1 | 10.10.10.73 | osb_domain1 | osb_server1 | 
| WebLogic 2 | 10.10.10.83 | osb_domain2 | osb_server2 | 
| WebLogic 3 | 10.10.10.93 | osb_domain3 | osb_server3 | 

沒有更多的衝突,這一次那麼我的JMS隊列開始按預期運行,而不會對我的代理和業務服務前面的代碼進行任何修改。

+1

在原始問題的設置中,命名衝突問題很可能是Weblogic域中的問題。我不能肯定地說現在是這個問題,但你的意見可以在未來幫助其他人。 –