如何在前端上監(jiān)聽(tīng)到RabbitMQ發(fā)送消息并完成數(shù)據(jù)監(jiān)控

如何在前端上監(jiān)聽(tīng)到RabbitMQ發(fā)送消息并完成數(shù)據(jù)監(jiān)控,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

創(chuàng)新互聯(lián)公司為企業(yè)級(jí)客戶提高一站式互聯(lián)網(wǎng)+設(shè)計(jì)服務(wù),主要包括成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、App定制開(kāi)發(fā)重慶小程序開(kāi)發(fā)、宣傳片制作、LOGO設(shè)計(jì)等,幫助客戶快速提升營(yíng)銷能力和企業(yè)形象,創(chuàng)新互聯(lián)各部門都有經(jīng)驗(yàn)豐富的經(jīng)驗(yàn),可以確保每一個(gè)作品的質(zhì)量和創(chuàng)作周期,同時(shí)每年都有很多新員工加入,為我們帶來(lái)大量新的創(chuàng)意。 

如何在前端實(shí)現(xiàn)對(duì)RabbitMQ發(fā)送消息的實(shí)時(shí)監(jiān)控,而這也涉及到了小編的知識(shí)盲區(qū),于是就開(kāi)始了學(xué)習(xí)的道路,接下來(lái)就跟著小編一起來(lái)學(xué)習(xí)一下這關(guān)于如何在前端監(jiān)聽(tīng)到RabbitMQ發(fā)送消息,以便實(shí)現(xiàn)自己項(xiàng)目中的功能吧。

RabbitMQ支持的協(xié)議

stomp協(xié)議

stomp協(xié)議即Simple (or Streaming) Text Orientated Messaging  Protocol,簡(jiǎn)單(流)文本定向消息協(xié)議,它提供了一個(gè)可互操作的連接格式,允許STOMP客戶端與任意STOMP消息代理(Broker)進(jìn)行交互。STOMP協(xié)議由于設(shè)計(jì)簡(jiǎn)單,易于開(kāi)發(fā)客戶端,因此在多種語(yǔ)言和多種平臺(tái)上得到廣泛地應(yīng)用。

而我們?cè)诮酉聛?lái)的文章里面主要講stomp如何對(duì)RabbitMQ實(shí)現(xiàn)監(jiān)聽(tīng)。

stomp協(xié)議的前身是TTMP協(xié)議(一個(gè)簡(jiǎn)單的基于文本的協(xié)議),專為消息中間件設(shè)計(jì)。

這句話就說(shuō)出了,專門為了消息中間件設(shè)計(jì)的,其實(shí)他并不是針對(duì)RabbitMQ在前端使用的,而是針對(duì)整個(gè)消息中間件的使用。

2.mqtt協(xié)議

還有一種經(jīng)常使用的,就是mqtt協(xié)議了,mqtt協(xié)議全稱(Message Queuing Telemetry  Transport,消息隊(duì)列遙測(cè)傳輸協(xié)議),是一種基于發(fā)布/訂閱(Publish/Subscribe)模式的輕量級(jí)通訊協(xié)議,該協(xié)議構(gòu)建于TCP/IP協(xié)議上,由IBM在1999年發(fā)布,目前最新版本為v3.1.1。

mqtt協(xié)議是屬于在應(yīng)用層協(xié)議的,這樣也就是說(shuō)只要是支持TCP/IP協(xié)議棧的地方,都可以使用mqtt.

RabbitMQ開(kāi)通stomp協(xié)議

安裝RabbitMQ的教程阿粉就不再給大家講了,畢竟百度上有很多文章來(lái)告訴大家如何去安裝RabbitMQ,不管是Linux還是Windows的,大家只要注意的一點(diǎn)就是,首先先安裝erlang  語(yǔ)言支持,不然你安裝RabbitMQ是安裝不上的。

開(kāi)通Stomp協(xié)議:

rabbitmq-plugins enable rabbitmq_web_stomp rabbitmq-plugins enable rabbitmq_web_stomp_examples #重啟 service rabbitmq-server stop && service rabbitmq-server start

當(dāng)我們開(kāi)啟之后,在我們的RabbitMQ中使能夠看到的,如圖:

如何在前端上監(jiān)聽(tīng)到RabbitMQ發(fā)送消息并完成數(shù)據(jù)監(jiān)控

大家可以看到,我們正確開(kāi)啟之后,在RabbitMQ的控制臺(tái)上,我們能夠看到http/web-stomp 的端口是15674。

接下來(lái)我們就要開(kāi)始寫一個(gè)案例進(jìn)行測(cè)試。

前端Stomp監(jiān)聽(tīng)RabbitMQ

如何在前端上監(jiān)聽(tīng)到RabbitMQ發(fā)送消息并完成數(shù)據(jù)監(jiān)控

如果這個(gè)時(shí)候我們發(fā)送一條消息到消息隊(duì)列,那么接下來(lái)他就會(huì)在頁(yè)面上展示出我們需要的內(nèi)容。

如何在前端上監(jiān)聽(tīng)到RabbitMQ發(fā)送消息并完成數(shù)據(jù)監(jiān)控

我們看看代碼是怎么寫的吧。

if (typeof WebSocket == 'undefined') {        console.log('不支持websocket')    }     // 初始化 ws 對(duì)象     var ws = new WebSocket('ws://localhost:15674/ws');     // 獲得Stomp client對(duì)象    var client = Stomp.over(ws);     // 定義連接成功回調(diào)函數(shù)    var on_connect = function(x) {        //data.body是接收到的數(shù)據(jù)        client.subscribe("/Fanout_Exchange/testMessage", function(data) {            var msg = data.body;            alert("收到數(shù)據(jù):" + msg);        });    };     // 定義錯(cuò)誤時(shí)回調(diào)函數(shù)    var on_error =  function() {        console.log('連接錯(cuò)誤,請(qǐng)重試');    };     // 連接RabbitMQ    client.connect('guest', 'guest', on_connect, on_error, '/');    console.log(">>>RabbitMQ已連接,測(cè)試正式開(kāi)始");

而這里面寫的內(nèi)容就比較有意思了,因?yàn)橹昂芏嗳硕紩?huì)發(fā)現(xiàn),不管怎么寫,都是不行,那是因?yàn)闆](méi)有完全的理解,阿粉最后總結(jié)了一下關(guān)于Stomp的使用。

總結(jié)

1./exchange/(exchangeName)

  • 對(duì)于 SUBCRIBE frame,destination 一般為/exchange/(exchangeName)/[/pattern] 的形式。該  destination 會(huì)創(chuàng)建一個(gè)唯一的、自動(dòng)刪除的、名為(exchangeName)的 queue,并根據(jù) pattern 將該 queue 綁定到所給的  exchange,實(shí)現(xiàn)對(duì)該隊(duì)列的消息訂閱。

  • 對(duì)于 SEND frame,destination 一般為/exchange/(exchangeName)/[/routingKey]  的形式。這種情況下消息就會(huì)被發(fā)送到定義的 exchange 中,并且指定了 routingKey。

2./queue/(queueName)

  • 對(duì)于 SUBCRIBE frame,destination 會(huì)定義(queueName)的共享 queue,并且實(shí)現(xiàn)對(duì)該隊(duì)列的消息訂閱。

  • 對(duì)于 SEND frame,destination 只會(huì)在第一次發(fā)送消息的時(shí)候會(huì)定義(queueName)的共享 queue。該消息會(huì)被發(fā)送到默認(rèn)的  exchange 中,routingKey 即為(queueName)。

3./amq/queue/(queueName)

  • 這種情況下無(wú)論是 SUBCRIBE frame 還是 SEND frame 都不會(huì)產(chǎn)生 queue。但如果該 queue 不存在,SUBCRIBE  frame 會(huì)報(bào)錯(cuò)。

  • 對(duì)于 SUBCRIBE frame,destination 會(huì)實(shí)現(xiàn)對(duì)隊(duì)列(queueName)的消息訂閱。

  • 對(duì)于 SEND frame,消息會(huì)通過(guò)默認(rèn)的 exhcange 直接被發(fā)送到隊(duì)列(queueName)中。

4./topic/(topicName)

  • 對(duì)于 SUBCRIBE frame,destination 創(chuàng)建出自動(dòng)刪除的、非持久的 queue 并根據(jù) routingkey  為(topicName)綁定到 amq.topic exchange 上,同時(shí)實(shí)現(xiàn)對(duì)該 queue 的訂閱。

  • 對(duì)于 SEND frame,消息會(huì)被發(fā)送到 amq.topic exchange 中,routingKey 為(topicName)。

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。

網(wǎng)站欄目:如何在前端上監(jiān)聽(tīng)到RabbitMQ發(fā)送消息并完成數(shù)據(jù)監(jiān)控
路徑分享:http://bm7419.com/article46/gocshg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、電子商務(wù)、網(wǎng)站排名定制網(wǎng)站、定制開(kāi)發(fā)企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名