JMS-управляемый каналом адаптер сообщений имеет хорошую
поддержку MBean через
DefaultMessageListenerContainer, где мы можем контролировать поток сообщений подписчикам. В этом блоге я продемонстрирую некоторые из этих возможностей. Для людей, которые спешат, вот
код @ Github,
- Скачайте activemq и распакуйте его
- запустите activemq.bat в папке <activemq-home> / bin
- Перейдите в браузер и введите http: // localhost: 8161 / admin / queues.jsp , создайте новую очередь «MyQueue»
- Получить последний код от Github
- Создайте файл войны, используя «mvn clean package»
- Разверните файл войны в контейнере Spring Tomcat
- Сообщение «Отправить» MyQueue в консоли администратора activemq в браузере
- Вы замечаете, что сообщение уничтожено
- Откройте jconsole.exe в каталоге jdk bin
- Войдите в удаленный процесс «localhost: 6969», uid: admin, пароль: «springsource»
- Перейдите на вкладку MBean и разверните spring.application / JMSContainer / testQueueContainer / Operation, нажмите на остановку операции
- Снова «Отправить» в MyQueue в консоли администратора ActiveMQ в браузере, если вы заметили, сообщение не используется
- Перейдите на вкладку MBean и разверните spring.application / JMSContainer / testQueueContainer / Operation, нажмите на начало операции
- Снова «Отправить» в MyQueue в консоли администратора ActiveMQ в браузере, если вы заметили, что сообщение было использовано
Подробности: конфигурация Spring Integration JMS Mbean
В типичной производственной ИТ-среде предприятия вам необходимо контролировать обработку сообщений подписчиками очереди. Типичным сценарием может быть, если есть проблема с подписчиком, и мы хотим приостановить подписку, чтобы устранить ее, нам нужен механизм для этого, как показано ниже.
Предоставить интерфейс жизненного цикла DefaultMessageListenerContainer
<bean id="queue.exporter" class="org.springframework.jmx.export.MBeanExporter"> <property name="beans"> <map> <entry key="spring.application:type=JMSContainer,name=testQueueContainer" value-ref="queueContainer" /> </map> </property> <property name="assembler"> <bean class="org.springframework.jmx.export.assembler.InterfaceBasedMBeanInfoAssembler"> <property name="managedInterfaces"> <value>org.springframework.context.Lifecycle</value> </property> </bean> </property> </bean>
Класс InterfaceBasedMBeanInfoAssembler представляет интерфейс определенного класса как Mbean, в приведенном выше примере он предоставляет жизненный цикл
Управление подписчиком JMS в JConsole
- Управление подписчиком JMS с помощью JConsole
Когда вы нажимаете на кнопку «Начать операцию» и нажимаете кнопку «Пуск», он запускает подписчика для прослушивания сообщения, а когда вы нажимаете «Стоп», он приостанавливает работу подписчика.
Вывод
MBean — это мощный способ раскрыть некоторые возможности различных канальных адаптеров Spring Integration, так что вы можете управлять ими с помощью различных инструментов, поддерживающих MBean, таких как JConsole, Hyperic . Мы также можем выставить Log4J Mbean, чтобы изменить уровень записи в производственной системе. Подробнее об этом в моем следующем блоге.