Порядок получения сообщений в очереди JMS

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

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

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

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

2 ответа

Решение

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

Согласно спецификации 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.

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

Другие вопросы по тегам