在/中使用JSP实现ActiveMQ消息侦听器

时间:2014-07-18 08:03:32

标签: java jsp jms activemq message-listener

我使用Active MQ / JMS在核心java中实现了Message Listener。此侦听器的目的是在ActiveMQ上订阅主题,然后侦听从主题接收的消息。我的代码作为控制台应用程序正常工作。现在我需要将我的应用程序扩展到Web应用程序中,以便收到的消息可以在Web页面中使用,即JSP。我很困惑消息监听器如何在JSP中工作,我将如何接收和处理来自活动MQ主题的消息。到目前为止,我有以下代码,但在当前情况下似乎没有帮助:

<%!
    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
%>

我应该如何使用此代码,以便我可以打印我的网页上收到的主题的每条消息?

1 个答案:

答案 0 :(得分:1)

加载网页时使用JSP页面来呈现HTML。在那之后,他们没有任何功能。

通常,您需要使用Spring创建Message Driven Bean(MDB)或something similar。 MDB将接收消息,处理数据并将其存储在某处(通常是数据库,但也可以是全局缓存,本地文件或类似文件)。然后,您的JSP只使用JMS消息存储的数据。

如果您真的希望消息更加动态地与用户交互 - 您可以使用来自客户端浏览器的JavaScript连接到ActiveMQ。 ActiveMQ发行版有一些例子。查看examples / mqtt / websocket或examples / stomp / websocket以查看一些正常工作的代码。