На моем сервере запущено веб-приложение Spring MVC. Недавно я хотел добавить функциональность, чтобы уведомить всех вошедших в систему пользователей, что их роль изменилась, чтобы они могли выйти и войти снова.
Я думал об использовании JMX, поэтому провел небольшой тест, и он работал нормально, за исключением того, что сообщение не транслировалось. Так, например, если у меня есть 2 человека, вошедших в систему, только 1 получает сообщение.
Итак, мой вопрос: возможно ли передать сообщение с JMX всем экземплярам веб-приложения (активные сеансы)?
Редактировать - используя JMS
Так что я сейчас пытаюсь с JMS, вот мой файл конфигурации:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
<bean id="connectionFactory"
class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://localhost:61616"/>
</bean>
<bean id="msgDestination"
class="org.apache.activemq.command.ActiveMQTopic">
<constructor-arg value="userToLogout.topic"/>
</bean>
<bean id="jmsTemplate"
class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory"/>
<property name="pubSubDomain" value="true"/>
<property name="receiveTimeout" value="10000"/>
</bean>
<bean id="userNotifier"
class="com.cap.messaging.UserNotifier">
<property name="destination" ref="msgDestination"/>
<property name="jmsTemplate" ref="jmsTemplate"/>
</bean>
<bean id="userNotificationListener"
class="com.cap.messaging.UserNotificationListener">
</bean>
<bean
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory" />
<property name="destinationName" value="userToLogout.topic" />
<property name="messageListener" ref="userNotificationListener" />
</bean>
Сейчас это не работает. Однако это работает, если я изменяю ActiveMQTopic на ActiveMQQueue. что мне здесь не хватает, и будет ли это работать?