2013-12-12 4 views
0

Раздел 2.14 JMS 2.0 Spec:является поточно сообщение безопасным

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

Поддерживает Параллельное использование: назначения, ConnectionFactory, соединение

Не поддерживает одновременное использование: JMSContext, Session, производитель, потребитель

Не уверен, почему безопасность нить сообщение не обсуждается в спецификации ?

EDIT

Является ли поток сообщений безопасно? Могут ли две нити делиться ею без гонки?

№ сообщения Сообщение не является потокобезопасным. Он не должен делиться между потоками.

+1

Зачем вам нужен доступ к одному и тому же объекту Message в нескольких потоках? В частности, измените сообщение в нескольких потоках. Вы можете разрешить одновременное чтение для нескольких потребителей. –

+0

Было бы безопасно делиться сообщением между потоками, если они не попытаются изменить сценарий –

+0

сообщения - два потока обрабатывают полезную нагрузку и устанавливают свойство сообщения. Можно ли это сделать параллельно без гонки? –

ответ

1

Сообщение не является потокобезопасным. Сообщение изменено, оно имеет сеттеры, поэтому, пока один поток использует сообщение, другой поток может вмешиваться и изменять его.

+0

Я изучал реализацию JMS-версии с открытым исходным кодом, полагая, что сообщение небезопасно. Интересно, почему это не спецификация? –

Смежные вопросы