Java 在/使用JSP实现ActiveMQ消息侦听器
我已经使用activemq/JMS在核心java中实现了消息侦听器。此侦听器的目的是订阅ActiveMQ上的主题,然后侦听从该主题接收的消息。我的代码作为控制台应用程序运行良好。现在,我需要将我的应用程序扩展到一个web应用程序中,以便接收到的消息可以在web页面(即JSP)中使用。我对消息侦听器在JSP中如何工作、如何接收和处理来自活动MQ主题的消息感到困惑。到目前为止,我有以下代码,但在当前场景中似乎没有帮助:Java 在/使用JSP实现ActiveMQ消息侦听器,java,jsp,jms,activemq,message-listener,Java,Jsp,Jms,Activemq,Message Listener,我已经使用activemq/JMS在核心java中实现了消息侦听器。此侦听器的目的是订阅ActiveMQ上的主题,然后侦听从该主题接收的消息。我的代码作为控制台应用程序运行良好。现在,我需要将我的应用程序扩展到一个web应用程序中,以便接收到的消息可以在web页面(即JSP)中使用。我对消息侦听器在JSP中如何工作、如何接收和处理来自活动MQ主题的消息感到困惑。到目前为止,我有以下代码,但在当前场景中似乎没有帮助: <%! public void handleReceivedMes
<%!
public void handleReceivedMessages() {
String url = ActiveMQConnection.DEFAULT_BROKER_URL;
String subject = "XXXXX";
try {
ConnectionFactory connectionFactory
= new ActiveMQConnectionFactory(url);
Connection connection = connectionFactory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic(subject);
MessageConsumer consumer = session.createConsumer(topic);
MessageListener listner = new MessageListener() {
@Override
public void onMessage(Message message) {
try {
if (message instanceof TextMessage) {
TextMessage textMessage = (TextMessage) message;
System.out.println("Received message : "
+ textMessage.getText() + "'");
}
} catch (JMSException e) {
System.out.println("Caught:" + e);
}
}
};
consumer.setMessageListener(listner);
try {
System.in.read();
} catch (IOException e) {
}
connection.close();
} catch (JMSException ex) {
// Logger.getLogger(Consumer.class.getName()).log(Level.SEVERE, null, ex);
}
}//end method
%>
如何使用此代码,例如打印主题收到的网页上的每一条消息?JSP页面在网页加载时用于呈现HTML。之后,它们就没有功能了 通常,您需要创建(MDB)或使用Spring。MDB将接收消息、处理数据并将其存储在某个位置(通常是数据库,但也可以是全局缓存、本地文件或类似文件)。然后,JSP只使用JMS消息存储的数据 如果您真的希望消息更动态地与用户交互,那么您可以从客户端浏览器使用JavaScript连接到ActiveMQ。ActiveMQ发行版中有一些与此相关的示例。查看examples/mqtt/websocket或examples/stomp/websocket以查看一些工作代码