Порядок получения сообщений в очереди JMS - PullRequest
3 голосов
/ 24 января 2011

Я добавляю два сообщения JMS в одном и том же месте назначения последовательно. Будут ли оба эти сообщения получены в том же порядке, в котором я их добавил, или есть вероятность обратного упорядочения, то есть когда сообщение будет получено первым в пункте назначения, оно будет извлечено первым.

Я добавляю в пункт назначения как:

producer.send(Msg1);
producer.send(Msg2);

Msg1 и Msg2 будут добавляться последовательно во всех случаях (например, сбои сети и задержки и т. Д.)?

Ответы [ 2 ]

5 голосов
/ 24 января 2011

Порядок сообщений не гарантируется (и не предписан спецификацией), а Всего порядка сообщений JMS объясняет детали, почему.Также см. Сообщение о переполнении стека Как обрабатывать порядок сообщений в JMS? .

2 голосов
/ 12 февраля 2014

Согласно спецификации JMS2

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.

Таким образом, для ответа на ваш вопрос сообщения будут приниматься в том же порядке, в котором они были отправлены с вышеуказанной информацией. Однако порядок доставки сообщений на сервер будет ограничен такими ограничениями, как приоритет сообщений, постоянный / непостоянный и т. Д.

...