Сущности в службе сообщений Java (JMS) версии 2.0

Клиентские приложения, которые подключаются к служебной шине Azure категории "Премиум" и используют Библиотеку JMS служебной шины Azure, могут использовать перечисленные ниже сущности.

Очереди

Очереди в JMS семантически сравнимы с традиционными Очередями служебной шины.

Чтобы создать очередь, используйте приведенные ниже методы класса JMSContext

Queue createQueue(String queueName)

Разделы

Разделы в JMS семантически сравнимы с традиционными Разделами служебной шины.

Чтобы создать раздел, используйте приведенные ниже методы класса JMSContext

Topic createTopic(String topicName)

Временные очереди

Если клиентскому приложению требуется временная сущность, которая будет присутствовать в течение времени существования приложения, оно может использовать временные очереди. Эти сущности используются в шаблоне Запрос/ответ.

Чтобы создать временную очередь, используйте приведенные ниже методы класса JMSContext

TemporaryQueue createTemporaryQueue()

Временные разделы

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

Чтобы создать временный раздел, используйте приведенные ниже методы класса JMSContext

TemporaryTopic createTemporaryTopic()

Подписки на службу сообщений Java (JMS)

Несмотря на то что они семантически похожи на Подписки (т. е. существуют в разделе и включают семантику публикации/подписки), спецификации службы сообщений Java включают концепции Общих подписок, Подписок без общего доступа и **Устойчивых и Неустойчивых атрибутов для данной подписки.

Примечание

Следующие подписки доступны в служебной шине Azure категории "Премиум" для клиентских приложений, подключающихся к ней с помощью Библиотеки JMS для служебной шины Azure.

С помощью портала Azure можно создавать только устойчивые подписки.

Общие устойчивые подписки

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

Любое приложение, которое проходит проверку подлинности в служебной шине, может получить общую устойчивую подписку.

Чтобы создать общую устойчивую подписку, используйте приведенные ниже методы класса JMSContext

JMSConsumer createSharedDurableConsumer(Topic topic, String name)

JMSConsumer createSharedDurableConsumer(Topic topic, String name, String messageSelector)

Общая устойчивая подписка продолжает существовать, если ее не удалить с помощью метода unsubscribe класса JMSContext.

void unsubscribe(String name)

Устойчивые подписки без общего доступа

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

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

Чтобы создать устойчивую подписку без общего доступа, используйте приведенные ниже методы класса JMSContext

JMSConsumer createDurableConsumer(Topic topic, String name)

JMSConsumer createDurableConsumer(Topic topic, String name, String messageSelector, boolean noLocal)

Примечание

Функция noLocal в настоящее время не поддерживается и игнорируется.

Устойчивая подписка без общего доступа продолжает существовать, если ее не удалить с помощью метода unsubscribe класса JMSContext.

void unsubscribe(String name)

Общие неустойчивые подписки

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

Поскольку подписка не устойчива, она не сохраняется. При отсутствии активных потребителей в этой подписке сообщения не поступают.

Чтобы создать общую неустойчивую подписку, создайте JmsConsumer, как показано в приведенных ниже методах класса JMSContext

JMSConsumer createSharedConsumer(Topic topic, String sharedSubscriptionName)

JMSConsumer createSharedConsumer(Topic topic, String sharedSubscriptionName, String messageSelector)

Общая неустойчивая подписка будет существовать до тех пор, пока в ней подключаются активные потребители.

Неустойчивые подписки без общего доступа

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

Поскольку подписка не устойчива, она не сохраняется. Такая подписка не получает сообщения, если в ней нет активных потребителей.

Чтобы создать неустойчивую подписку без общего доступа, создайте JMSConsumer, как показано в приведенных ниже методах класса JMSContext

JMSConsumer createConsumer(Destination destination)

JMSConsumer createConsumer(Destination destination, String messageSelector)

JMSConsumer createConsumer(Destination destination, String messageSelector, boolean noLocal)

Примечание

Функция noLocal в настоящее время не поддерживается и игнорируется.

Неустойчивая подписка без общего доступа будет существовать до тех пор, пока в ней подключается активный потребитель.

Селекторы сообщений

Аналогично Фильтрам и действиям для обычных подписок служебной шины, для подписок JMS существуют Селекторы сообщений.

Селекторы сообщений можно настроить для каждой подписки JMS, и они будут существовать как условие фильтра в свойствах заголовка сообщения. Доставляются только сообщения со свойствами заголовка, которые соответствуют выражению, указанному в селекторе сообщений. Значение null, или пустая строка, указывает на отсутствие селектора сообщений для подписки или потребителя JMS.

Дополнительные термины для подписок службы сообщений Java (JMS) 2.0

Определение области клиента

Подписки, как указано в интерфейсе API 2.0 службы сообщений Java (JMS), могут быть связаны или не связаны в конкретном клиентском приложении (определяется соответствующим образом clientId).

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

Любые попытки доступа к подписке с заданным идентификатором клиента (скажем, clientId1) из приложения, имеющего другой идентификатор клиента (скажем, clientId2), приведут к созданию другой подписки с другим заданным идентификатором клиента (clientId2).

Примечание

Идентификатор клиента может быть пустым или иметь значение null, но должен соответствовать идентификатору клиента, заданному в клиентском приложении JMS. Служебная шина Azure рассматривает идентификатор клиента null и пустой идентификатор клиента как одинаковые элементы.

Если идентификатор клиента имеет значение null или пусто, он доступен только для клиентских приложений, идентификатор клиента которых также имеет значение null или пусто.

Совместное использование

Общие подписки позволяют нескольким клиентам и потребителям (то есть объектам JMSConsumer) принимать от них сообщения.

Примечание

Общие подписки, ограниченные конкретным идентификатором клиента, по-прежнему могут быть доступны нескольким клиентам или потребителям (т. е. объектам JMSConsumer), но каждое клиентское приложение должно иметь тот же идентификатор клиента.

Подписки без общего доступа позволяют только одному клиенту или потребителю (т. е. объекту JMSConsumer) получать от них сообщения. Если объект JMSConsumer создается для подписки без общего доступа, в то время как в нем уже есть активное прослушивание сообщений JMSConsumer, возникает JMSException.

Длительность

Устойчивые подписки сохраняют и продолжают получать сообщения из раздела, независимо от того, использует ли приложение (JMSConsumer) сообщения из него.

Неустойчивые подписки не сохраняются и собирают сообщения из раздела, только пока приложение (JMSConsumer) использует сообщения из него.

Представление подписок в области клиента

Учитывая, что подписки с областью клиента (JMS) должны находиться вместе с уже существующими подписками, способ представления подписок в области клиента (JMS) должен соответствовать приведенному ниже формату.

  • <ИМЯ-ПОДПИСКИ>$<ИД-КЛИЕНТА>$D (для устойчивых подписок)
  • <ИМЯ-ПОДПИСКИ>$<ИД-КЛИЕНТА>$ND (для неустойчивых подписок)

Здесь $ — это разделитель.

Дальнейшие действия

Дополнительные сведения и примеры использования обмена сообщениями в служебной шине Microsoft Azure см. в следующих дополнительных статьях: