0


activemq推数据给前端的方式

文章目录

消费者程序接收消息并通过 WebSocket 将消息传递给前端

ActiveMQ 是一个开源的消息代理服务,可以用来实现各种消息传递模式,包括点对点和发布/订阅模型。要将数据从 ActiveMQ 推送到前端,通常可以通过以下步骤实现:

  1. 配置 ActiveMQ 服务器:首先确保 ActiveMQ 服务器已经正确配置和运行。
  2. 生产者发送消息:生产者程序将数据发送到 ActiveMQ 队列或主题中。
  3. 消费者接收消息:消费者程序从 ActiveMQ 队列或主题中接收消息,并将其传递给前端。
  4. 前端接收消息:前端通过 WebSocket 或者其他方式接收从消费者程序传递过来的消息。 下面是一个具体的实现方案: 步骤 1:配置 ActiveMQ 服务器 确保 ActiveMQ 服务器已经正确配置和运行。可以下载 ActiveMQ 的二进制文件并启动服务。 ./bin/activemq start 步骤 2:生产者发送消息 使用 Java 作为示例,生产者代码如下:
  1. import org.apache.activemq.ActiveMQConnectionFactory;
  2. import javax.jms.*;
  3. public class Producer {
  4. public static void main(String[] args) throws JMSException {
  5. ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
  6. Connection connection = factory.createConnection();
  7. connection.start();
  8. Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
  9. Destination destination = session.createQueue("TEST.QUEUE");
  10. MessageProducer producer = session.createProducer(destination);
  11. TextMessage message = session.createTextMessage("Hello, World!");
  12. producer.send(message);
  13. session.close();
  14. connection.close();
  15. }
  16. }

步骤 3:消费者接收消息
消费者程序接收消息并通过 WebSocket 将消息传递给前端。

  1. import org.apache.activemq.ActiveMQConnectionFactory;
  2. import javax.jms.*;
  3. import java.io.IOException;
  4. import java.util.concurrent.CopyOnWriteArraySet;
  5. import javax.websocket.*;
  6. import javax.websocket.server.ServerEndpoint;
  7. @ServerEndpoint("/websocket")
  8. public class Consumer {
  9. private static CopyOnWriteArraySet<Session> sessions = new CopyOnWriteArraySet<>();
  10. @OnOpen
  11. public void onOpen(Session session) {
  12. sessions.add(session);
  13. }
  14. @OnClose
  15. public void onClose(Session session) {
  16. sessions.remove(session);
  17. }
  18. public static void main(String[] args) throws JMSException {
  19. ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
  20. Connection connection = factory.createConnection();
  21. connection.start();
  22. Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
  23. Destination destination = session.createQueue("TEST.QUEUE");
  24. MessageConsumer consumer = session.createConsumer(destination);
  25. consumer.setMessageListener(new MessageListener() {
  26. @Override
  27. public void onMessage(Message message) {
  28. if (message instanceof TextMessage) {
  29. try {
  30. String text = ((TextMessage) message).getText();
  31. for (Session s : sessions) {
  32. s.getBasicRemote().sendText(text);
  33. }
  34. } catch (JMSException | IOException e) {
  35. e.printStackTrace();
  36. }
  37. }
  38. }
  39. });
  40. }
  41. }

步骤 4:前端接收消息
前端代码(例如,HTML + JavaScript):
ActiveMQ WebSocket Demo

Messages

  1. <script>
  2. var socket = new WebSocket("ws://localhost:8080/websocket");
  3. socket.onmessage = function(event) {
  4. var messages = document.getElementById('messages');
  5. var message = document.createElement('li');
  6. message.textContent = event.data;
  7. messages.appendChild(message);
  8. };
  9. </script>

通过以上步骤,数据可以从 ActiveMQ 推送到前端。生产者将消息发送到 ActiveMQ 队列,消费者从队列中接收消息并通过 WebSocket 将消息传递给前端,前端通过 WebSocket 接收并显示消息。 ## 使用 MQTT 协议将数据推送到前端 ActiveMQ 也支持 MQTT 协议,可以使用 MQTT 协议将数据推送到前端。以下是一个使用 ActiveMQ 和 MQTT 将数据推送到前端的示例。 步骤 1:配置 ActiveMQ 以支持 MQTT 首先,确保 ActiveMQ 服务器已经正确配置和运行。ActiveMQ 默认支持 MQTT,但需要确保相关的 MQTT 连接器已启用。在 conf/activemq.xml 文件中,确认以下配置已存在: 启动 ActiveMQ 服务器: ./bin/activemq start 步骤 2:生产者发送消息(使用 MQTT 协议) 生产者代码可以使用任意支持 MQTT 的库,例如 Eclipse Paho MQTT 客户端库。以下是一个使用 Java 的示例:

  1. import org.eclipse.paho.client.mqttv3.MqttClient;
  2. import org.eclipse.paho.client.mqttv3.MqttException;
  3. import org.eclipse.paho.client.mqttv3.MqttMessage;
  4. public class MqttProducer {
  5. public static void main(String[] args) {
  6. String broker = "tcp://localhost:1883";
  7. String topic = "test/topic";
  8. String content = "Hello, MQTT!";
  9. int qos = 2;
  10. String clientId = "JavaProducer";
  11. try {
  12. MqttClient client = new MqttClient(broker, clientId);
  13. client.connect();
  14. MqttMessage message = new MqttMessage(content.getBytes());
  15. message.setQos(qos);
  16. client.publish(topic, message);
  17. client.disconnect();
  18. } catch (MqttException e) {
  19. e.printStackTrace();
  20. }
  21. }
  22. }

步骤 3:前端接收消息(使用 MQTT 协议)
前端可以使用 MQTT.js 库,通过 WebSocket 连接到 ActiveMQ 服务器并接收消息。需要确保 ActiveMQ 服务器支持 MQTT over WebSocket。可以在 conf/jetty.xml 文件中添加以下配置:

  1. <bean id="mqttWS" class="org.eclipse.jetty.server.nio.SelectChannelConnector">
  2. <property name="host" value="0.0.0.0"/>
  3. <property name="port" value="1884"/>
  4. <property name="acceptors" value="2"/>
  5. <property name="maxIdleTime" value="30000"/>
  6. <property name="lowResourcesMaxIdleTime" value="1500"/>
  7. <property name="lowResourcesConnections" value="50"/>
  8. <property name="statsOn" value="false"/>
  9. <property name="confidential" value="false"/>
  10. <property name="lowResourcesMaxIdleTime" value="30000"/>
  11. <property name="acceptQueueSize" value="100"/>
  12. <property name="maxBuffers" value="2048"/>
  13. <property name="requestHeaderSize" value="8192"/>
  14. <property name="responseHeaderSize" value="8192"/>
  15. </bean>
  16. 在前端 HTML 中使用 MQTT.js 库:
  17. <!DOCTYPE html>
  18. <html>
  19. <head>
  20. <title>ActiveMQ MQTT WebSocket Demo</title>
  21. <script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js"></script>
  22. </head>
  23. <body>
  24. <h1>Messages</h1>
  25. <ul id="messages"></ul>
  26. <script>
  27. var client = new Paho.MQTT.Client("localhost", 1884, "webClient");
  28. client.onMessageArrived = function(message) {
  29. var messages = document.getElementById('messages');
  30. var msg = document.createElement('li');
  31. msg.textContent = message.payloadString;
  32. messages.appendChild(msg);
  33. };
  34. client.connect({onSuccess: function() {
  35. client.subscribe("test/topic");
  36. }});
  37. </script>
  38. </body>
  39. </html>

通过以上步骤,数据可以通过 MQTT 协议从 ActiveMQ 推送到前端。生产者将消息发布到 MQTT 主题,前端通过 MQTT over WebSocket 连接到 ActiveMQ 并订阅相应的主题,以接收并显示消息。

标签: activemq 中间件

本文转载自: https://blog.csdn.net/Fireworkit/article/details/140153857
版权归原作者 思静语 所有, 如有侵权,请联系我们删除。

“activemq推数据给前端的方式”的评论:

还没有评论