JMS съобщения в Java приложение

JMS (Java Message Service) е стандарт за съобщения между приложения. Java приложения, базирани на Java SE (самостоятелна) или Java EE (WEB) технология, могат да създават, изпращат и получават JMS съобщения. Софтуерът, използван за предаване на съобщения между приложения, използващи стандарта JMS, генерира опашки за съобщения.

Изпращане на съобщения java приложенията се изпълняват асинхронно, т.е. процедурата не чака отговор от получателя. Като получатели на съобщения, които организират опашки (опашка), това може да бъде или софтуер като WebSphere MQ, който свързва приложения чрез канал за съобщения, или WEB контейнер като JBoss, GlassFish, който осигурява съобщения между приложенията на контейнери, или през Интернет с помощта на JNDI.

Статията разглежда примери за изпращане и получаване на съобщения с помощта както на WEB приложение (Java EE), така и на самостоятелно приложение (Java SE). Описанието на примерите е разделено на две части. Тази страница разглежда взаимодействието на WEB приложението с доставчика на HornetQ. Взаимодействието на самостоятелно Java приложение с Websphere MQ е обсъдено тук.

Пример за обмен на съобщение със сървъра JBoss

В първото най-просто уеб приложение "Jms-jboss" за изпращане и получаване на JMS съобщения, сървърът за приложения Wildfly версия 8.2 (по-рано JBoss Application Server или JBoss AS) ще се използва като контейнер.

Конфигуриране на сървъра за приложения на Wildfly

За да използвате Wildfly за JMS съобщения, трябва да бъде конфигуриран конфигурационният му файл /standalone/configuration/standalone.xml. По подразбиране настройките на JMS не са включени в конфигурационния файл и трябва да бъдат дефинирани ръчно. Можете обаче да използвате конфигурационния файл standalone-full.xml, в който сървърът включва JMS настройките на доставчика на HornetQ, за да създадете подходящи опашки и да обменяте съобщения.

Добавете опашка към конфигурационния файл standalone-full.xml в секцията с раздели. Две опашки (ExpiryQueue и DLQ) вече съществуват в подраздела. Нека добавим своя ред testQueue с JNDI „jms/queue/test“:

Например, беше достатъчно да добавите един елемент, който работи в контейнера. Вторият елемент "java: jboss/exported/jms/queue/test" може да работи извън контейнера, т.е. от друг JVM. За него предпоставка е дефиницията в началото на името „java: jboss/exported /“. Разбира се, може да се използват съществуващи опашки (ExpiryQueue и DLQ).

Забележка:
DLQ (Dead Letter Queue) е локална опашка, наричана опашка с мъртви букви. Такава опашка се създава за всеки мениджър на опашки за улавяне на неизпратени съобщения, свързани с проблеми в мрежата или при получателя.

Ако не създадете DLQ, тогава грешките в приложенията могат да прекъснат връзката с каналите. В този случай получаването на съобщения в опашката не само ще спре, но работата може да бъде нарушена и доставчикът на MQ, например, няма да получава и изпълнява администраторски команди. Препоръчваме ви да проектирате приложенията си, за да избегнете тези сценарии. Освен това DLQ трябва да се следи, тъй като съобщенията към тази опашка най-често съдържат грешки.

За да стартирате Wildfly със самостоятелния файл за конфигурация full.xml от IDE на Eclipse, отворете прозореца „JBoss Runtime“ и дефинирайте стойността „Конфигурационен файл“. За целта отворете раздела Сървъри (Перспектива „Java EE“) и щракнете двукратно върху сървъра Wildfly. В прозореца за преглед, който се отваря, кликнете върху връзката „Runtime Enviroment“, която ще отвори прозореца „JBoss Runtime“: