2014-02-12 23 views

回答

3

按照JMS規範

JMS defines that messages sent by a session to a destination must be received 
in the order in which they were sent. This defines a partial ordering 
constraint on a session’s input message stream. 

JMS does not define order of message receipt across destinations or across 
a destination’s messages sent from multiple sessions. This aspect of a 
session’s input message stream order is timing-dependent. It is not under  
application control. 

而且

Although clients loosely view the messages they produce within a session 
as forming a serial stream of sent messages, the total ordering of this stream 
is not significant. The only ordering that is visible to receiving clients is 
the order of messages a session sends to a particular destination. 
Several things can affect this order like message priority, 
persistent/non persistent etc. 

因此,要回答你的問題是not really JMS provider specific收到什麼樣的順序消息。他們將以與上述信息相同的順序收到。然而,消息傳遞到服務器的順序受限於消息優先級,持久性/非持久性等限制。

+0

好吧,我只是想檢查這適用於'topic'和'queue',那是對的嗎?謝謝 – vikingsteve

+0

是的,它適用於可以是'隊列'或'主題'的'Destination'。 –

+0

除了Aniket對規格的評論之外,通常的WMQ限制也適用。例如,如果消息遍歷QMgr到QMgr通道並且具有不同的優先級或持久性,並且消息可以遵循多個路徑(如果消息傳遞到的隊列上有多個使用者)(因爲在涵蓋主題將消息傳遞給隊列,即使應用程序沒有將它們視爲隊列),如果隊列溢出到DLQ等,那麼它們可能不會以發送的順序到達。該規範暗示了這個地方談論多個目的地。 –