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.pswp.cn/web/41503.shtml
    繁體地址,請注明出處:http://hk.pswp.cn/web/41503.shtml
    英文地址,請注明出處:http://en.pswp.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;致力于為用戶提供優質、…