activemq推数据给前端的方式

文章目录

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

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

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

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

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

import org.apache.activemq.ActiveMQConnectionFactory;import javax.jms.*;
import java.io.IOException;
import java.util.concurrent.CopyOnWriteArraySet;
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;@ServerEndpoint("/websocket")
public class Consumer {private static CopyOnWriteArraySet<Session> sessions = new CopyOnWriteArraySet<>();@OnOpenpublic void onOpen(Session session) {sessions.add(session);}@OnClosepublic void onClose(Session session) {sessions.remove(session);}public static void main(String[] args) throws JMSException {ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");Connection connection = factory.createConnection();connection.start();Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);Destination destination = session.createQueue("TEST.QUEUE");MessageConsumer consumer = session.createConsumer(destination);consumer.setMessageListener(new MessageListener() {@Overridepublic void onMessage(Message message) {if (message instanceof TextMessage) {try {String text = ((TextMessage) message).getText();for (Session s : sessions) {s.getBasicRemote().sendText(text);}} catch (JMSException | IOException e) {e.printStackTrace();}}}});}
}

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

ActiveMQ WebSocket Demo

Messages

    <script>var socket = new WebSocket("ws://localhost:8080/websocket");socket.onmessage = function(event) {var messages = document.getElementById('messages');var message = document.createElement('li');message.textContent = event.data;messages.appendChild(message);};
    </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 的示例:
    import org.eclipse.paho.client.mqttv3.MqttClient;
    import org.eclipse.paho.client.mqttv3.MqttException;
    import org.eclipse.paho.client.mqttv3.MqttMessage;public class MqttProducer {public static void main(String[] args) {String broker = "tcp://localhost:1883";String topic = "test/topic";String content = "Hello, MQTT!";int qos = 2;String clientId = "JavaProducer";try {MqttClient client = new MqttClient(broker, clientId);client.connect();MqttMessage message = new MqttMessage(content.getBytes());message.setQos(qos);client.publish(topic, message);client.disconnect();} catch (MqttException e) {e.printStackTrace();}}
    }
    

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

    <bean id="mqttWS" class="org.eclipse.jetty.server.nio.SelectChannelConnector"><property name="host" value="0.0.0.0"/><property name="port" value="1884"/><property name="acceptors" value="2"/><property name="maxIdleTime" value="30000"/><property name="lowResourcesMaxIdleTime" value="1500"/><property name="lowResourcesConnections" value="50"/><property name="statsOn" value="false"/><property name="confidential" value="false"/><property name="lowResourcesMaxIdleTime" value="30000"/><property name="acceptQueueSize" value="100"/><property name="maxBuffers" value="2048"/><property name="requestHeaderSize" value="8192"/><property name="responseHeaderSize" value="8192"/>
    </bean>
    在前端 HTML 中使用 MQTT.js 库:
    <!DOCTYPE html>
    <html>
    <head><title>ActiveMQ MQTT WebSocket Demo</title><script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js"></script>
    </head>
    <body><h1>Messages</h1><ul id="messages"></ul><script>var client = new Paho.MQTT.Client("localhost", 1884, "webClient");client.onMessageArrived = function(message) {var messages = document.getElementById('messages');var msg = document.createElement('li');msg.textContent = message.payloadString;messages.appendChild(msg);};client.connect({onSuccess: function() {client.subscribe("test/topic");}});</script>
    </body>
    </html>
    

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

    本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/41503.shtml

    如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

    相关文章

    那些年背过的面试题——MySQL篇

    本文是技术人面试系列 MySQL 篇&#xff0c;面试中关于 MySQL 都需要了解哪些基础&#xff1f;一文带你详细了解&#xff0c;欢迎收藏&#xff01; WhyMysql&#xff1f; NoSQL 数据库四大家族 列存储 Hbase K-V 存储 Redis 图像存储 Neo4j 文档存储 MongoDB 云存储 OSS …

    AI大模型的智能心脏:向量数据库的崛起

    在人工智能的飞速发展中,一个关键技术正悄然成为AI大模型的智能心脏——向量数据库。它不仅是数据存储和管理的革命性工具,更是AI技术突破的核心。随着AI大模型在各个领域的广泛应用,向量数据库的重要性日益凸显。 01 技术突破:向量数据库的内在力量 向量数据库以其快速检索…

    第3章 配置 Vite

    1 基本配置 Vite 的配置文件 vite.config.js 是基于 JavaScript 或 TypeScript 的文件&#xff0c;可以使用 ES 模块语法进行导出。Vite 通过这个配置文件来调整各种构建和开发的选项。 1.1 创建配置文件 在项目根目录创建 vite.config.js 文件&#xff1a; // vite.config…

    RNN、LSTM与GRU循环神经网络的深度探索与实战

    循环神经网络RNN、LSTM、GRU 一、引言1.1 序列数据的迷宫探索者&#xff1a;循环神经网络&#xff08;RNN&#xff09;概览1.2 深度探索的阶梯&#xff1a;LSTM与GRU的崛起1.3 撰写本博客的目的与意义 二、循环神经网络&#xff08;RNN&#xff09;基础2.1 定义与原理2.1.1 RNN…

    【Python】组合数据类型:序列,列表,元组,字典,集合

    个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️Python】 文章目录 前言组合数据类型序列类型序列常见的操作符列表列表操作len()append()insert()remove()index()sort()reverse()count() 元组三种序列类型的区别 集合类型四种操作符集合setfrozens…

    【CSS in Depth 2精译】2.5 无单位的数值与行高

    当前内容所在位置 第一章 层叠、优先级与继承第二章 相对单位 2.1 相对单位的威力2.2 em 与 rem2.3 告别像素思维2.4 视口的相对单位2.5 无单位的数值与行高 ✔️2.6 自定义属性2.7 本章小结 2.5 无单位的数值与行高 有些属性允许使用无单位的数值&#xff08;unitless value…

    【数据结构与算法】快速排序挖坑法

    &#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《数据结构与算法》 期待您的关注 ​

    前端面试题16(跨域问题)

    跨域问题源于浏览器的同源策略&#xff08;Same-origin policy&#xff09;&#xff0c;这一策略限制了来自不同源的“写”操作&#xff08;比如更新、删除数据等&#xff09;&#xff0c;同时也限制了读操作。当一个网页尝试请求与自身来源不同的资源时&#xff0c;浏览器会阻…

    网络配置文件中type

    在网络配置文件中&#xff0c;type是一个参数&#xff0c;用于指定网络接口的类型。它指定了网络接口所使用的协议或技术。 以下是一些常见的type参数值&#xff1a; “ethernet”&#xff1a;表示以太网接口&#xff0c;用于连接以太网设备&#xff0c;如有线网卡。 “wifi”…

    Python实现ABC人工蜂群优化算法优化随机森林回归模型(RandomForestRegressor算法)项目实战

    说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 人工蜂群算法(Artificial Bee Colony, ABC)是由Karaboga于2005年提出的一种新颖的基于群智能的全局优化…

    PD虚拟机不能复制Mac的文件怎么回事 PD虚拟机不能复制Mac的文件怎么办 Parallels Desktop怎么用

    PD虚拟机不仅能提供跨系统协作的服务&#xff0c;还能进行虚拟机系统与原生系统间的文件共享、文本复制、文件复制等操作&#xff0c;让系统间的资源可以科学利用。但在实际操作过程中&#xff0c;PD虚拟机不能复制Mac的文件怎么回事&#xff1f;PD虚拟机不能复制Mac的文件怎么…

    linux centos7.9 安装mysql5.7;root设置客户端登录、配置并发、表名大小写敏感等

    查看centos版本 cat /etc/centos-releasecentos版本为7.9 查看是否已安装mariadb,安装了需要先删除 1.查看是否安装了mariadb和mysql,安装了需要先删除 mariadb是mysql的一个分支,但要安装mysql需要删除它 执行rpm -qa|grep mariadb,查看mariadb情况 查找到有就删除 执行…

    中小学白名单编程竞赛:精英竞技场的深度解析

    目录 1. 引言2. 特点3. 为什么参加白名单编程竞赛4. 具体竞赛介绍4.1 全国中小学信息技术创新与实践大赛(NOC大赛)4.1.1 面向对象4.1.2 考试内容4.1.3 赛事特点4.1.4 报名时间4.1.5 含金量4.1.6 优缺点4.1.7 赛事流程4.2 蓝桥杯大赛4.2.1 面向对象4.2.2 考试内容4.2.3 赛事特…

    Day59 动态规划part12

    LC115不同的子序列&#xff08;未掌握&#xff09; 递推公式与LC392类似&#xff0c;但是初始化略有不同 LC392的dp数组含义为相同字符个数而本体的dp数组含义为出现的次数&#xff0c;因此dp[i][0]1 两种情况 s[i-1]t[j-1] dp[i][j] dp[i-1][j-1]dp[i][j] dp[i-1][j] s[…

    Kubernetes集群性能测试之kubemark集群搭建

    Kubernetes集群性能测试之kubemark集群搭建 Kubemark是K8s官方提供的一个对K8s集群进行性能测试的工具。它可以模拟出一个K8s cluster&#xff08;Kubemark cluster&#xff09;&#xff0c;不受资源限制&#xff0c;从而能够测试的集群规模比真实集群大的多。这个cluster中ma…

    运维锅总详解系统启动流程

    本文详细介绍Linux及Windows系统启动流程&#xff0c;并分析了它们启动流程的异同以及造成这种异同的原因。希望本文对您理解系统的基本启动流程有所帮助&#xff01; 一、Linux系统启动流程 Linux 系统的启动流程可以分为几个主要阶段&#xff0c;从电源开启到用户登录。每个…

    Java笔试|面试 —— 对继承性的理解

    面试/笔试&#xff1a;谈谈对继承性的理解>继承性的好处&#xff1a;-减少了代码的冗余&#xff0c;提高了复用性-提高了扩展性&#xff08;父类统一扩展、继承后扩展&#xff09;-为多态的使用&#xff0c;提供了前提>Java中继承的特点-局限性&#xff1a;类的单继承性。…

    有一个日期(Date)类的对象和一个时间(Time)类的对象,均已指定了内容,要求一次输出其中的日期和时间

    可以使用友元成员函数。在本例中除了介绍有关友元成员函数的简单应用外&#xff0c;还将用到类的提前引用声明&#xff0c;请读者注意。编写程序&#xff1a; 运行结果&#xff1a; 程序分析&#xff1a; 在一般情况下&#xff0c;两个不同的类是互不相干的。display函…

    关于Java异常机制及finally关键字的详解

    异常机制(Exception) 软件程序在运行过程中&#xff0c;非常可能遇到异常问题。常见的异常&#xff1a; 1、用户输入错误 2、设备错误 3、硬件问题&#xff0c;例如打印机关掉、服务器问题 4、物理限制&#xff1a;磁盘满了 Java是采用面向对象的方式来处理异常的。 处理过程…

    基于Java的水果商品销售网站

    1 水果商品销售网站概述 1.1 课题简介 随着电子商务在当今社会的迅猛发展&#xff0c;水果在线销售已逐渐演变为一种极为便捷的购物方式&#xff0c;日益受到人们的青睐。本系统的设计初衷便是构建一个功能完备、用户体验友好的水果销售平台&#xff0c;致力于为用户提供优质、…