Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Клиентские приложения, подключающиеся к служебной шине Azure Premium и использующие библиотеку JMS служебной шины Azure , могут использовать приведенные ниже сущности.
Queues
Очереди в JMS семантически сопоставимы с традиционными очередями Служебной Шины.
Чтобы создать очередь, используйте приведенные ниже методы в JMSContext классе.
Queue createQueue(String queueName)
Темы
Темы в JMS семантически сопоставимы с традиционными разделами служебной шины.
Чтобы создать раздел, используйте приведенные ниже методы в JMSContext классе .
Topic createTopic(String topicName)
Временные очереди
Если клиентскому приложению требуется временная сущность, которая существует в течение всего времени существования приложения, она может использовать временные очереди. Эти сущности используются в шаблоне "Запрос-ответ ".
Чтобы создать временную очередь, используйте приведенные ниже методы в JMSContext классе.
TemporaryQueue createTemporaryQueue()
Временные темы
Как и временные очереди, временные топики существуют для того, чтобы предоставить возможность публикации и подписки через временную сущность, которая существует на протяжении всего времени работы приложения.
Чтобы создать временный раздел, используйте приведенные ниже методы в JMSContext классе.
TemporaryTopic createTemporaryTopic()
Подписки службы сообщений Java (JMS)
Хотя эти подписки семантически похожи на подписки в разделах служебной шины (т. е. существуют в разделе и включают семантику публикации и подписки), спецификация службы сообщений Java представляет основные понятия общих, необщих и **устойчивых, и неустойчивых атрибутов для данной подписки.
Замечание
Приведенные ниже подписки доступны на уровне "Премиум" служебной шины Azure для клиентских приложений, подключающихся к служебной шине Azure с помощью библиотеки JMS служебной шины Azure.
С помощью портала Azure можно создать только устойчивые подписки.
Общие устойчивые подписки
Общая устойчивая подписка используется, когда все сообщения, опубликованные в теме, должны быть получены и обработаны приложением независимо от того, активно ли приложение используется из подписки.
Любое приложение, прошедшее проверку подлинности для получения из Service Bus, может получать из общей надежной подписки.
Чтобы создать общую устойчивую подписку, используйте приведенные ниже методы в 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 в настоящее время не поддерживается и игнорируется.
Подписка без общего доступа продолжает существовать до тех пор, пока не будет активного потребителя, получающего от него.
Селекторы сообщений
Как и фильтры и действия существуют в обычных подписках Service Bus, селекторы сообщений существуют в подписках JMS.
Селекторы сообщений можно настроить на каждой из подписок JMS и существовать в качестве условия фильтра в свойствах заголовка сообщения. Доставляются только сообщения со свойствами заголовка, соответствующие выражению селектора сообщений. Значение NULL или пустая строка указывает, что для подписки или потребителя JMS нет селектора сообщений.
Дополнительные понятия для подписок службы сообщений Java (JMS) 2.0
Определение объема работы для клиента
Подписки, указанные в API службы сообщений Java (JMS) 2.0, могут быть, а могут и не быть ограничены конкретным клиентским приложением (специфичным и идентифицируемым соответствующим образом).
После ограничения подписки доступ к ней можно получить только из клиентских приложений с одинаковым идентификатором клиента.
Любые попытки доступа к подписке, ограниченной определенным идентификатором клиента (скажем clientId1) из приложения с другим идентификатором клиента (скажем clientId2), приведет к созданию другой подписки, ограниченной другим идентификатором клиента (clientId2).
Замечание
Идентификатор клиента может быть равен null или пустым, но он должен соответствовать идентификатору клиента, установленному в клиентском приложении JMS. С точки зрения служебной шины Azure идентификатор клиента null и пустой идентификатор клиента имеют то же поведение.
Если идентификатор клиента имеет значение NULL или пустой, он доступен только для клиентских приложений, идентификатор клиента которых также имеет значение NULL или пуст.
Возможность совместного использования
Общие подписки позволяют нескольким клиентским или потребительским объектам (то есть объектам JMSConsumer) получать от них сообщения.
Замечание
Общие подписки, относящиеся к определенному идентификатору клиента, по-прежнему могут быть доступны нескольким объектам клиента или потребителям (то есть объектам JMSConsumer), но каждый из клиентских приложений должен иметь один и тот же идентификатор клиента.
Неподеленные подписки позволяют получать сообщения от них только одному клиенту или потребителю, т. е. объекту JMSConsumer.
JMSConsumer Если в подписке без общего доступа создается компонент, в то время как на ней уже активно прослушивается JMSConsumer, возникает JMSException.
Durability
Устойчивые подписки сохраняются и продолжают собирать сообщения из раздела независимо от того, использует ли приложение (JMSConsumer) сообщения из него.
Непостоянные подписки не сохраняются и собирают сообщения из топика до тех пор, пока приложение (JMSConsumer) их потребляет.
Представление подписок на уровне клиента
Учитывая, что подписки на уровне клиента (JMS) должны сосуществовать с существующими подписками, то способ представления подписок на уровне клиента (JMS) использует следующий формат.
- <SUBSCRIPTION-NAME>$<CLIENT-ID>$D (для устойчивых подписок)
- <ПОДПИСКА-ИМЯ>$<ИДЕНТИФИКАТОР-КЛИЕНТА>$ND (для непостоянных подписок)
$ Ниже приведен разделитель.
Дальнейшие шаги
Дополнительные сведения и примеры использования обмена сообщениями в служебной шине см. в следующих расширенных темах: