Установка clientID для потребителя JMS 2.0 - PullRequest
0 голосов
/ 03 ноября 2019

В JMS 1.x clientId используется для уникальной идентификации клиентов при создании долговременных подписок. Этот ответ объясняет использование clientId в JMS 1.x

В JMS 2.x clientId сделан необязательным. Я хочу понять плюсы и минусы предоставления clientId в JMS 2.x.

Из статьи Oracle о функциях JMS 2.x :

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

Звучит так, будто имя подписки является уникальным идентификатором в настоящее время, но тогда почему у clientID? Это новые методы в классе сеанса, поэтому он не может иметь обратной совместимости. Любые преимущества или недостатки установки clientId с JMS 2.x?

MessageConsumer messageConsumer = session.createSharedDurableConsumer(topic, "myDurableSub");

1 Ответ

0 голосов
/ 03 ноября 2019

Спецификация JMS 2 указывает, почему идентификатор клиента существует в разделе 6.1.3:

Единственным использованием идентификатора клиента, определенного JMS, является его обязательное использование при идентификации неразделенной долговременной подписки или еенеобязательное использование при идентификации общей долгосрочной или недлительной подписки.

Что касается общих недолговечных подписок, в спецификации это сказано в разделе 8.3.3:

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

В разделе 8.3.4 spec говорит то же самое об общих долгосрочных подписках:

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

При создании идентификатора клиентаопционально для общих долговременных и недолговечных подписок, что делает совместное использование подписки немного более удобным, поскольку каждому клиенту нужно только указать имя подписки, а не и идентификатор клиента, и имя подписки. Это согласуется с общей темой JMS 2, которая упрощает API, чтобы сделать JMS более удобным в использовании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...