Использование API службы сообщений Java 2.0 со служебной шиной Azure категории "Премиум"
В этой статье объясняется, как использовать популярный API службы сообщений Java (JMS) 2.0 для взаимодействия с Служебная шина Azure по протоколу РАСШИРЕННОго протокола очереди сообщений (AMQP) 1.0.
Примечание.
Поддержка API службы сообщений Java (JMS) 2.0 доступна только на уровне "Премиум".>
Необходимые компоненты
Приступая к работе со служебной шиной
В этом руководстве предполагается, что у вас уже есть пространство имен Служебной шины. Если вы этого не сделали, создайте пространство имен и очередь с помощью портал Azure. Дополнительные сведения о создании пространства имен и очередей Служебной шины см. в статье о начале работы с очередями Служебной шины на портале Azure.
Настройка среды разработки Java
Для разработки приложений Java необходимо настроить соответствующую среду разработки.
- Должен быть установлен JDK (комплект SDK для Java) или JRE (среда выполнения Java).
- JDK или JRE добавляется в путь сборки и соответствующие системные переменные.
- Для использования JDK или JRE устанавливается Java IDE. Например, Eclipse или IntelliJ.
Чтобы узнать больше о том, как подготовить среду разработки для Java в Azure, используйте это руководство.
Функции, поддерживаемые JMS
В следующей таблице перечислены функции службы сообщений Java (JMS), поддерживаемые в настоящее время служебной шиной Azure. В ней также указаны неподдерживаемые функции.
Функция | API | Состояние |
---|---|---|
Очереди |
|
Поддерживается |
Разделы |
|
Поддерживается |
Временные очереди |
|
Поддерживается |
Временные разделы |
|
Поддерживается |
Создатель сообщений / JMSProducer |
|
Поддерживается |
Браузеры очередей |
|
Поддерживается |
Потребитель сообщения/ JMSConsumer |
noLocal в настоящее время не поддерживается |
Поддерживается |
общие устойчивые подписки; |
|
Поддерживается |
Устойчивые подписки без общего доступа |
noLocal в настоящее время не поддерживается, для этой величины следует задать значение "false" |
Поддерживается |
общие неустойчивые подписки; |
|
Поддерживается |
Необщие неустойчивые подписки |
noLocal в настоящее время не поддерживается, для этой величины следует задать значение "false" |
Поддерживается |
Селекторы сообщений | зависит от созданного получателя | Поддерживается |
Delivery Delay (запланированные сообщения) |
|
Поддерживается |
Создание сообщения |
|
Поддерживается |
Транзакции между объектами |
|
Поддерживается |
Распределенные транзакции | Не поддерживается |
Скачивание клиентской библиотеки службы сообщений Java (JMS)
Чтобы использовать все функции, доступные на уровне "Премиум", добавьте следующую библиотеку в путь сборки проекта: azure-servicebus-jms. Этот пакет предоставляет некоторые необходимые значения по умолчанию, такие как значения политики предварительной выборки, политики повторного подключения, идентификатор Microsoft Entra ИД и поддержка управляемого удостоверения из поля.
Примечание.
Чтобы добавить azure-servicebus-jms в путь сборки, используйте предпочитаемое средство управления зависимостями для проекта, например Maven или Gradle.
Создание приложений Java
После импорта зависимостей приложения Java могут быть записаны в не зависящий от поставщика JMS способ.
Подключение к Служебной шине Azure с помощью JMS
Для подключения к Служебной шине Azure с помощью клиентов JMS необходима строка подключения, которая доступна на портале Azure в разделе Первичная строка подключения в Политиках общего доступа.
Создайте экземпляр
ServiceBusJmsConnectionFactorySettings
.ServiceBusJmsConnectionFactorySettings connFactorySettings = new ServiceBusJmsConnectionFactorySettings(); connFactorySettings.setConnectionIdleTimeoutMS(20000);
Создайте экземпляр
ServiceBusJmsConnectionFactory
с соответствующим параметромServiceBusConnectionString
.String ServiceBusConnectionString = "<SERVICE_BUS_CONNECTION_STRING_WITH_MANAGE_PERMISSIONS>"; ConnectionFactory factory = new ServiceBusJmsConnectionFactory(ServiceBusConnectionString, connFactorySettings);
Используйте
ConnectionFactory
для созданияConnection
, а затем и для созданияSession
Connection connection = factory.createConnection(); Session session = connection.createSession();
или
JMSContext
(для клиентов JMS 2.0).JMSContext jmsContext = factory.createContext();
Внимание
Несмотря на аналогичное наименование Session JMS и Session Служебной шины, эти сеансы полностью независимы друг от друга.
В JMS 1.1 сеанс является важным стандартным блоком API, который позволяет создавать
MessageProducer
иMessageConsumer
Message
сам интерфейс. Дополнительные сведения см. в учебнике по модели программирования JMS API.В служебная шина сеансы — это служба и клиентская конструкция для включения обработки FIFO в очередях и подписках.
Написание приложения JMS
После создания экземпляра Session
JMSContext
приложения можно использовать знакомые API JMS для выполнения операций управления и данных. Сведения о поддерживаемых интерфейсах API см. в списке функций, поддерживаемых JMS. Ниже приведены некоторые фрагменты кода для начала работы с JMS .
Отправка сообщений в очередь и раздел
// Create the queue and topic
Queue queue = jmsContext.createQueue("basicQueue");
Topic topic = jmsContext.createTopic("basicTopic");
// Create the message
Message msg = jmsContext.createMessage();
// Create the JMS message producer
JMSProducer producer = jmsContext.createProducer();
// send the message to the queue
producer.send(queue, msg);
// send the message to the topic
producer.send(topic, msg);
Получение сообщений из очереди
// Create the queue
Queue queue = jmsContext.createQueue("basicQueue");
// Create the message consumer
JMSConsumer consumer = jmsContext.createConsumer(queue);
// Receive the message
Message msg = (Message) consumer.receive();
Получение сообщений из общей устойчивой подписки в разделе
// Create the topic
Topic topic = jmsContext.createTopic("basicTopic");
// Create a shared durable subscriber on the topic
JMSConsumer sharedDurableConsumer = jmsContext.createSharedDurableConsumer(topic, "sharedDurableConsumer");
// Receive the message
Message msg = (Message) sharedDurableConsumer.receive();
Итоги
В этом руководстве демонстрируется, как клиентские приложения Java, использующие службу сообщений Java (JMS) через AMQP 1.0, могут взаимодействовать со Служебной шиной Azure.
Протокол AMQP 1.0 Service Bus можно также использовать из других языков, в числе которых .NET, C, Python и PHP. Компоненты, созданные с помощью этих языков, могут надежно и точно обмениваться сообщениями, используя AMQP 1.0 в Service Bus.