【问题标题】:Implementing ActiveMQ Message Listener in/using JSP在/使用 JSP 中实现 ActiveMQ 消息侦听器
【发布时间】:2014-07-18 08:03:32
【问题描述】:

我已经使用 Active MQ/JMS 在核心 java 中实现了消息侦听器。这个监听器的目的是在 ActiveMQ 上订阅一个主题,然后监听从该主题接收到的消息。我的代码作为控制台应用程序运行良好。现在我需要将我的应用程序扩展为 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
%>

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

【问题讨论】:

    标签: java jsp jms activemq message-listener


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-28
      • 1970-01-01
      • 1970-01-01
      • 2010-12-04
      • 2012-12-29
      • 2014-06-25
      • 2020-03-06
      • 1970-01-01
      相关资源
      最近更新 更多