Главная » Spring » Настройка  обработчиков сообщений Spring

0

Вся хитрость наделения объекта POJO возможностью получать сообщения заключается в настройке его как обработчика. Простран- ство имен jms в Spring содержит все необходимое для этого. Сначала обработчик необходимо объявить компонентом:

<bean  id="spittleHandler" class="com.habuma.spitter.alerts.SpittleAlertHandler" />

Затем, чтобы превратить SpittleAlertHandler в объект POJO, управ- ляемый сообщениями, этот компонент можно объявить обработчи- ком сообщений:

<jms:listener-container   connection-factory="connectionFactory">

<jms:listener  destination="spitter.alert.queue" ref="spittleHandler" method="processSpittle" />

</jms:listener-container>

Здесь, внутри контейнера обработчиков сообщений, объявляется обработчик сообщений. Контейнер обработчиков сообщений – это специальный компонент, просматривающий приемник JMS в ожи- дании поступления сообщений. Как только появится новое сообще- ние, он тут же извлечет его и передаст любому обработчику сообще- ний, заинтересованному в этом сообщении. Этот порядок взаимо- действий изображен на рис. 13.7.

Для настройки контейнеров и обработчиков в Spring использу- ются два элемента из пространства имен jms. Элемент <jms:listener- container>  применяется для включения элементов <jms:listener>.

Рис. 13.7. Контейнер обработчика сообщений в очереди/теме.

При появлении сообщения он передает его обработчику (такому как MDP)

В этом примере в его атрибуте connectionFactory указывается ссылка на компонент connectionFactory, который будет использоваться все- ми вложенными элементами <jms:listener> при приеме сообщений. В данном случае атрибут connectionFactory можно было бы опустить, поскольку здесь он получает значение connectionFactory, предусмот- ренное по умолчанию.

Элемент <jms:listener> используется для идентификации компо- нента и его метода, который будет вызываться для обработки вхо- дящих сообщений. Чтобы обеспечить обработку извещений о новых сообщениях, в атрибут ref элемента записана ссылка на наш компо- нент spittleHandler. Когда в очереди spitter.alert.queue (определяет- ся атрибутом destination) появится новое сообщение, будет вызван метод processSpittle() компонента spittleHandler (согласно атрибуту method).

Источник:   Уоллс К., Spring в действии. – М.: ДМК Пресс, 2013. – 752 с.: ил.

По теме:

  • Комментарии