2013-07-28 85 views
0

在CICS中,我們有一種叫做ENQ的命令,它對於基於期望值的單線程很有用。同樣,我們在Websphere中有什麼?即,我希望我的MDB從輸入隊列中讀取多條消息。不過,我想嚴格按收到的順序處理這些消息。將激活規範屬性中的「服務器會話」的值設置爲1將實現此目的,但我希望以編程方式在我的MDB中執行此操作Websphere應用程序中的單線程

回答

1

以下是JMS 1.1 specification的引用。似乎只有在您從單個會話發送消息時才能保證排序;在這種情況下會話輸入消息流將被排序。由於不存在用於限制會話計數的API,我想您必須依賴於此配置的服務器設施。

4.4.10消息順序JMS客戶端需要了解他們何時可以依賴消息順序以及何時不能。

4.4.10.1消息接收順序會話消耗的消息 定義了一個串行順序。此順序非常重要,因爲它定義了消息確認的效果。有關更多詳細信息,請參見第4.4.11節「消息 確認」。每個會話的消費者的消息在會話的輸入消息 流中交錯。 JMS定義會話向目的地 發送的消息必須按它們的發送順序接收(參見章節 4.4.10.2「消息發送順序」,只有少數資格)。這定義了會話的輸入消息 流的部分排序約束。 JMS不定義跨 目的地或跨多個 會話發送的目標郵件的郵件接收順序。會話輸入消息流順序的這一方面是依賴於時間的 。 它不在應用程序控制下

+0

我想我會以不同的方式提出我的要求。在這裏:2條消息到達2個不同的MDB實例。這些消息包含一個引用ID(用於使用ref ID更新數據庫)。因此,我想一次處理一個,即對參考ID發出鎖定,處理第一條消息,然後處理第二條消息。當然,具有不同參考ID的消息將由其他線程處理。 – ssdimmanuel