高清不卡毛片免费观看_国产成人精品久久亚洲高清不卡_99riav国产在线观看_亚洲精品视频在线

go連接rabbitmq(golang amqp)

本文主要介紹連接rabbitmq(golang amqp),下面一起看看連接rabbitmq(golang amqp)相關資訊。
1.rabbitmq簡介rabbitmq是amqp(高級消息隊列協議)的開源消息隊列中間件,由erlang編程語言實現。
消息隊列中間件的作用:
應用解耦流量調峰異步處理緩存存儲消息通信提高系統可擴展性
1.1 rabbitmq特點可靠性:通過持久化和傳輸確認,保證消息傳輸的可靠性和可擴展性。多個rabbitmq節點可以組成一個高可用性的集群。隊列可以在rabbitmq集群中鏡像,這樣即使某些節點掛起,隊列仍然可以支持多種協議:原生支持amqp,也可以支持stomp、mqtt等協議豐富的客戶端。常見的編程語言都有客戶端管理接口。它帶有一個webui界面插件機制。rabbitmq提供了各種插件,可以根據需要擴展插件。
1.2 rabbitmq的基本概念一般來說,rabbit mq是生產者和消費者模型,用于接收、存儲和轉發消息。
生產者:消息的生產者和傳遞方。
消費者:消息的消費者。
rabbitmq代理(rabbitmq mq服務節點。在單機環境中,它代表rabbitmq服務器。
隊列:在rabbitmq中,隊列是存儲消息數據的唯一形式。
綁定:rabbitmq中的綁定是exchange將消息路由到隊列時需要遵循的規則。如果你想指定 交換機e將消息路由到隊列q ,那么q需要綁定到e,綁定操作需要為某些類型的交換機定義可選的路由關鍵字屬性。路由鍵的意義是從發送到交換機的眾多消息中選擇一些消息,路由到綁定隊列。
routingkey:當一個報文被投遞到交換機時,通常會指定一個routingkey,報文的路由規則就是通過這個routing key定義的。routingkey通常意味著生產者和消費者已經就一個密鑰策略達成一致,因此消費者可以合法地從生產者那里獲取數據。此routingkey主要用于交換交換模式設置為direct和topic模式時,扇出模式不使用routingkey。
交換:生產者將消息發送到交換機,交換機將取消它。信息被路由到相應的隊列。有四種類型的開關:扇出、直接、主題和標題。
1.3有四種類型的交換開關:扇出、直接、主題和標題。
1.3.1扇出可以理解為扇形開關。
它將通過這種類型的交換機發送的消息路由到綁定到該交換機的所有隊列,并像風扇一樣傳播到所有隊列。
扇出型交換機忽略routingkey的存在,直接向所有綁定隊列廣播消息。
1.3.2直接可以理解為直接切換。
它根據消息攜帶的routingkey將消息傳遞到相應的隊列。
直接類型的交換是rabbitmq代理的默認類型,它有一個特殊的屬性,對于一些簡單的應用程序非常有用。當使用這種類型的交流,你不 不需要指定路由關鍵字的名稱。在這種類型下創建的隊列有一個默認的路由關鍵字,它通常與隊列同名。1.3.3話題可以理解為主題的切換。
主題切換在routingkey和bindkey匹配規則方面更加靈活,這些規則也將消息路由到routingkey和bindkey匹配的隊列,但是匹配規則具有以下特征:
routingkey是除以的字符串。比如go.log.info,java.log.errorbindkey也是一個字符串除以。但是在bindkey中,可以用兩個特殊字符*和#來匹配一個單詞,用#來匹配多規格單詞(零個或多個單詞)。routingkey和bindkey是一種 模糊匹配 ,所以a 模糊匹配 是必需的。
不匹配的消息將被丟棄或返回給生成器。
1.3.4集管可以理解為頭部開關。
標頭型開關不常用。
標題交換的一個簡單易懂的解釋是:
有時候一個消息的路由操作會涉及到多個屬性,所以使用消息頭比使用路由鍵更容易表達,頭交換就是為此而誕生的。頭交換機使用多個消息屬性而不是路由關鍵字來建立路由規則。通過判斷消息頭的值是否能匹配指定的綁定來建立路由規則。我們可以將一個隊列綁定到頭交換機,并使用多個匹配的頭進行它們之間的綁定。呃).在這種情況下,消息代理必須從應用程序開發人員那里獲得更多信息。換句話說,它需要考慮消息是需要部分匹配還是完全匹配。 還有一條消息上面提到的是 x-match 參數。何時 x-match 被設置為 任何 ,消息頭的任何值都可以滿足條件,而when x-match 被設置為 所有 消息頭的所有值都需要匹配成功。頭交換機可以看作是直接連接交換機的另一種形式。頭交換機可以像直連交換機一樣工作,但區別在于頭交換機的路由規則基于頭屬性值,而不是路由關鍵字。路由關鍵字必須是字符串,但標頭屬性值沒有此限制。它們甚至可以是整數或哈希值(字典)。
1.4 rabbitmq工作流程1.4.1消息產生流程消息產生者與rabbitmq broker建立連接,連接建立后,打開通道聲明切換,并設置相關屬性(切換類型、持久性等。)來聲明隊列。并設置其相關屬性(排他性、持久性、自動刪除等。)將消息從交換機綁定的消息生成器發送到rabbitmq broker,并通過路由鍵進行排隊。該報文包含路由關鍵字、交換機等信息,交換機根據接收到的路由關鍵字成功找到匹配隊列,但未能將該報文存儲在隊列中找到匹配。根據生產者配置的屬性,選擇丟棄或返回生產者關閉通道,關閉連接。1.4.2消息消費流程消費者與rabbitmq broker建立連接。連接建立后,打開一個通道,消費方向rabbitmq broker請求消費方對應隊列中的消息,等待rabbitmq broker響應并交付對應隊列中的消息。當消費者收到消息時,消費者確認消息(ack),rabbitmq broker刪除確認的消息以關閉通道并關閉連接。
2.rabbitmq安裝個人學習推薦使用docker安裝。
直接安裝管理版就行了,搜索圖片。
$ docker搜索rabbit mq:管理
拉鏡像
$碼頭工人拉rabbitmq:manag:拉從library/rabbitmq7b1a6ab2:拉完成37f453d83d8f:拉完整e64e769bc4fd:拉完整c288a913222f:拉完整12addf9c8bf9:拉完整t:拉完整b63d48599313:拉完整05c99d3d2a57:拉完整43665bfbc3f9:拉完整digest: 4c 4b 66 ad 5 ec 40 b2 c 27943 b 9804d 307 bf 31 c 17 c 8537 cd 0 cd 1072362 00 a9cd 2814 status:
啟動rabbitmq容器
$ docker run-d-p 15672 : 15672-p 5672 : 5672-e rabbit mq _ default _ user = admin-e rabbit mq _ default _ pass = admin-name rabbit mq-hos tname = rabbit mq hostone rabbit mq: management參數的含義如下:
-d后臺運行-p端口映射-name指定容器名rabbitmq_default_user指定用戶帳號,不指定guestabitmq _ default _ pass的默認用戶密碼,不指定guest的默認用戶密碼。
訪問 p: 15672是rabbitmq的webui界面,默認用戶名密碼為guest/guest。
3.去吧,拉比github.com/streadway/amqp tmq客戶推薦的依賴包
演示的目錄結構如下:
$樹。├──消費者│└──consumer.go├──go.mod├──go.sum├──lib│├──common-func . go│└──error.go├──生產者│ └── producer.go├──任務│ └── task.go└──工人└──工人. go
3.1客戶端連接//rabbit mq conn get rabbit mq broker連接funcrabbit mq conn(conn * amqp . connection,err error){ var(user string = 行政及管理pwd字符串= 行政及管理主機字符串= xx . xx . xx . xx 端口字符串= 5672 )網址: = ;amqp:// 用戶 : 殘疾人和殘疾人協會@ 主持人 : 港口和碼頭/ /new connection conn,err = amqp。撥號(url)return}
3.2使用簡單隊列模式的基本隊列是rabbitmq的常規用法。簡單理解就是消息生產者將消息發送到一個隊列,然后消息消費者從隊列中讀取消息。
當多個使用者訂閱同一個隊列時,隊列中的消息會平均分配給多個使用者進行處理。
首先,定義消息的生產者:
鍵入簡單的演示結構{ name string ` json : 姓名和名稱json : addr `} func main{//連接rabbitmq服務器conn,erricoh 5-@ .com = lib . rabbit mq connlib . error handle(err,lib . errconnectabbit)defer conn . close//新建一個channelch,err: = conn . channellib . error handle(呃,lib。erroropenchannel) defender ch。close//聲明或創建一個隊列來保存消息q,err : = ch . queue declare( 簡單: queue ,//namefalse,// durablefalse,unusedfalse時刪除,// exclusivefalse,// no-waitnil,// argument)lib。錯誤句柄(err,lib。errdeclaqueue)data : = simpl: ;tom;,addr: 上海 ,}databyt:= json。封送(數據)庫。錯誤句柄(err,lib。errmarshaljson)err = ch。發布( ,// exchangeq。name,// routing keyfalse,// mandatoryfalse,//immediateamqp.publishing{cont: ;t:數據字節,},)lib。錯誤句柄(err,lib。errpublishmsg)日志。printf( [x]發送了% s 數據字節)}
定義消息使用者:
func main {conn,:= lib。rabbitmqconnlib。錯誤句柄(err,lib。errconnectrabbit)defer conn . closech,err : = conn . channellib。錯誤句柄(err,lib。erropenchannel)延遲更改。clos:= ch。queue declare( simple: queue ,// namefalse,//durablefalse,//未使用時刪除false,//exclusive false,//no-waitnil,//args) lib.errorhandle (err,lib . errdeclaqu:= ch。consume(q.name,//queue ,// consumertrue,// auto-ackfalse,// exclusivefalse,// no-localfalse,// no-waitnil,// args)lib。錯誤句柄(err,lib。errregisterconsumer)go func{ for d : = rang: % s ,d.body)}}log。printf( [*]等待消息。要退出,請按ctrl c )選擇{}}
我們啟動一個生產者和一個消費者,運行結果是:
$ go run producer . go 2022/05/19 16 : 06 : 25[x]已發送{ 姓名和名稱: 湯姆 , addr : 上海 }
$ go run consumer . go 2022/05/19 16 : 06 : 33[*]等待消息。要退出,請按ctrl c 2022/05/19 16 : 06 : 33收到一個m:姓名和名稱: 湯姆 , addr : 上海 }
3.3工作隊列工作隊列也叫任務隊列。
任務隊列是為了避免等待一些耗時的任務被執行,而是將需要執行的任務封裝成消息發送到工作隊列,后臺運行的工作進程取出任務消息并執行。關閉任務
多個后臺工作進程同時進行,它們共享任務(搶占)。
定義用于生成任務消息的任務生成器。
func body from(args[]string)string { var s stringif(l:], )}return s}func main {conn,:= lib。rabbitmqconnlib。錯誤句柄(err,lib。errconnectrabbit)defer conn . closech,err : = conn . channellib。錯誤句柄(err,lib。erropenchannel)延遲更改。clos:= ch。queue declare( task: queue ,// namefalse,// durablefalse,unusedfalse時刪除,// exclusivefalse,// no-waitnil,// args)lib。錯誤句柄(err,lib。errdeclaqueue)body : = body from(os。args)err = ch。發布( ,q.name,false,false,amqp.publishing{cont: ;t: amqp.p:[]byte(body),},)lib。錯誤句柄(err,lib。errpublishmsg)日志。printf( 發送了% s ,正文)}
定義員工:
func main {conn,:= lib。rabbitmqconnlib。錯誤句柄(err,lib。埃爾科內ctrabbit)defer conn.closech,err : = conn . channellib。錯誤句柄(err,lib。erropenchannel)延遲更改。clos:= ch。queue declare( task: queue 假,假,假,假,零)lib。錯誤句柄(err,lib。errdeclaqueue)///將預取計數器設置為1//將消息分發到并行處理中的不同工作進程err = ch.qos (1,//預取計數0,//預取大小fals:= ch。消費(q . name ,false,false,false,false,nil),lib。錯誤句柄(err,lib。errregisterconsumer)forever : = make(chan bool)go func{ for d : = rang: % s 主體)日志。printf( 完成和)d.ack(false)}}log。printf( [*]等待消息。要退出,請按ctrl c )-永遠}
我們打開兩個worker,運行結果是:
$ go run task . go hello world 2022/05/19 16 : 03 : 31發送hello world $ go run task . go hello golang 2022/05/19 16 : 03 : 53發送h:03:59發來hello rabbitmq
$ go運行worker . go 2022/05/19 16 : 03 : 44[*]等待消息。要退出,請按ctrl c 2022/05/19 16 : 03 : 44收到m: hello world 2022/05/19 16 : 44 done 2022/05/19 16 : 03 : 53收到m: hello golang 2022/05/19 16 echo
$ go運行worker . go 2022/05/19 16 : 03 : 47[*]等待消息。要退出請按ctrl c 2022/05/19 16 : 03 : 59收到一個m:你好rabbit mq 2022/05/19 16 : 03 : 59完成
同時可以查看rabbitmq的w
blog . csdn . net/ _ 42402854/articl
標簽:
信息排隊
了解更多連接rabbitmq(golang amqp)相關內容請關注本站點。

sata固態硬盤分區教程圖解,雙SATA如何對第二塊硬盤分區
win7旗艦版正式版(win7 正版)
windows10有哪幾個版本,Windows10怎么退回上版本
三星9格怎么解鎖,怎樣解開手機九格鎖屏
windows11魔獸爭霸(電腦玩不了魔獸爭霸)
go連接rabbitmq(golang amqp)
在電腦上看手機的內容(如何在電腦上看手機上的文件)
mac m1 安裝windows(2020款macbook安裝win10)
谷歌星空怎么用,谷歌相機星空模式
nvme轉sata3硬盤盒,求助m2接口如何轉換SATA3
魅族怎么反饋bug,魅族反饋在哪里
iphone上安裝安卓模擬器(蘋果如何安裝安卓模擬器)
w10怎么取消圖標上的小盾牌(window10怎么去掉圖標盾牌)
win7更改右鍵菜單(如何設置電腦右鍵菜單背景)
雷蛇鍵盤fn鍵在哪(怎么打開雷蛇鍵盤)
五千多的辦公筆記本哪個好,五千左右筆記本電腦什么品牌好點
酷比魔方i10拆機教程,酷比魔方平板機殼咋拆開
如何給蘋果電腦安裝win10(蘋果電腦window10安裝教程)
炒股用什么筆記本比較好(炒股用筆記本電腦推薦)
手機上填電子表格下載什么(電子表格用手機怎么填寫)
高清不卡毛片免费观看_国产成人精品久久亚洲高清不卡_99riav国产在线观看_亚洲精品视频在线

    9000px;">

      欧美日韩国产免费一区二区| 亚洲欧美激情一区二区| 日韩欧美国产电影| 国产精品天干天干在线综合| 日本精品视频一区二区三区| 麻豆国产一区二区| 亚洲精品亚洲人成人网在线播放| 日本欧洲一区二区| 欧美伦理电影网| 国产清纯在线一区二区www| 国产在线精品一区二区夜色| 9191精品国产综合久久久久久 | 亚洲gay无套男同| 日韩一区二区高清| 久久99精品国产麻豆不卡| 国产超碰在线一区| 亚洲午夜视频在线| 91麻豆精品91久久久久同性| 日韩av一区二区在线影视| 亚洲成人动漫av| 日韩视频免费直播| 日韩码欧中文字| 色欧美片视频在线观看在线视频| 日韩电影一二三区| 欧美成人a∨高清免费观看| 一本久道久久综合中文字幕| 中文字幕中文字幕在线一区| av在线播放不卡| 久久伊人蜜桃av一区二区| 日韩高清不卡一区二区| 日韩电影在线看| 日韩精品综合一本久道在线视频| 国产98色在线|日韩| 欧美日韩国产另类一区| 国产成人高清视频| 亚洲日本va午夜在线电影| 欧美一级黄色大片| 一本一本久久a久久精品综合麻豆| 在线免费av一区| 国产精品一区二区男女羞羞无遮挡| 中文字幕+乱码+中文字幕一区| 亚洲黄色性网站| 中文字幕色av一区二区三区| 欧美日韩视频在线第一区| 亚洲二区视频在线| 中文字幕国产一区二区| 91麻豆精品国产| 欧美日韩国产综合草草| eeuss影院一区二区三区| 日本不卡的三区四区五区| 亚洲精品中文字幕在线观看| 久久精品一区二区| 99久久99久久免费精品蜜臀| 中文字幕亚洲区| 粗大黑人巨茎大战欧美成人| 亚洲国产精品黑人久久久| 日韩午夜在线影院| 欧美在线播放高清精品| 高清不卡一二三区| 黄一区二区三区| 视频一区二区三区在线| 一区二区三区产品免费精品久久75| 中文字幕一区二区三区在线播放 | 国产一区二区三区久久悠悠色av| 亚洲国产精品一区二区久久恐怖片| 欧美性色综合网| 欧美日韩大陆在线| 欧美久久久久免费| 欧美日韩日日夜夜| 欧美日韩高清影院| 懂色av一区二区夜夜嗨| 色呦呦国产精品| 国产盗摄女厕一区二区三区 | 国产成人免费视频一区| 欧美哺乳videos| 91麻豆.com| 色婷婷亚洲精品| 成人午夜精品一区二区三区| 国产婷婷色一区二区三区| 色综合天天综合在线视频| 亚洲成年人网站在线观看| 亚洲成人福利片| 亚洲电影欧美电影有声小说| 久久久久99精品国产片| 欧美国产视频在线| 国产精品福利一区| 精品国产一区二区三区四区四 | 亚洲女同一区二区| 日本免费在线视频不卡一不卡二| 亚洲一区视频在线观看视频| 美女视频一区二区| 成人综合婷婷国产精品久久蜜臀| 国产美女视频一区| 91九色最新地址| 成人动漫一区二区| 不卡一区二区中文字幕| 国产欧美一区二区三区网站| 亚洲精品中文字幕乱码三区 | 国产日韩欧美制服另类| 亚洲国产高清在线观看视频| 欧美性色综合网| 久久久久久久精| 欧美亚洲动漫精品| 久久综合九色综合欧美就去吻 | 午夜精品久久久久久不卡8050| 亚洲精品午夜久久久| 亚洲国产欧美在线| 久久精品国产免费| 91成人在线精品| 91福利在线播放| 337p日本欧洲亚洲大胆精品| 国产精品美女久久久久aⅴ| 亚洲男人的天堂一区二区| 五月天欧美精品| 天天色天天操综合| av欧美精品.com| 欧美一区二区三区免费观看视频| 中文字幕免费不卡| 久久久久久影视| 亚洲一区在线播放| 成人午夜av影视| 91精选在线观看| 亚洲精品一二三区| 国产一区二区三区四区在线观看| 日本国产一区二区| 精品免费日韩av| 天堂av在线一区| 成人手机电影网| 91麻豆国产在线观看| 欧美成人vr18sexvr| 亚洲动漫第一页| 91欧美一区二区| 日本一区二区免费在线| 捆绑调教美女网站视频一区| 色哟哟在线观看一区二区三区| 久久青草欧美一区二区三区| 久久久久久久久97黄色工厂| 国产成人精品亚洲午夜麻豆| 精品国产三级电影在线观看| 欧美一区午夜精品| 视频一区二区欧美| 日韩欧美电影一二三| 另类小说视频一区二区| 欧美精品一区二区三区四区| 99国产麻豆精品| 久久久久久久久99精品| 欧美日本一区二区| 欧美精品 国产精品| 91日韩精品一区| 久久久久久久综合狠狠综合| 福利电影一区二区| 国产午夜精品理论片a级大结局 | 国产日韩精品久久久| 精品视频一区二区三区免费| 国产99精品国产| 国产成人午夜电影网| 国产成人亚洲综合色影视| 九一久久久久久| 久久国产麻豆精品| 日日摸夜夜添夜夜添亚洲女人| 欧美激情在线一区二区| 国产亚洲婷婷免费| 欧美国产97人人爽人人喊| 在线观看视频欧美| 欧美久久一区二区| 欧美一区永久视频免费观看| 91首页免费视频| 欧美日本不卡视频| 亚洲最大成人综合| 男人的天堂亚洲一区| 国产精品免费丝袜| 欧美一级久久久久久久大片| 麻豆国产精品一区二区三区 | 亚洲影院免费观看| 日韩欧美激情在线| 国产精品久久久久久一区二区三区| 粉嫩一区二区三区性色av| 国产亚洲污的网站| 91丝袜高跟美女视频| 日韩精品色哟哟| 欧美国产激情一区二区三区蜜月| 91久久奴性调教| 一区二区欧美精品| 欧美一区二区视频观看视频| 日本一不卡视频| 日韩电影免费在线| gogo大胆日本视频一区| 欧美日韩一级片在线观看| 欧美电影一区二区| 日韩精品最新网址| 麻豆一区二区99久久久久| 粉嫩av一区二区三区| 日韩一二三区视频| 极品尤物av久久免费看| 国产一区二区三区黄视频| 国产福利一区二区三区视频在线| 中文字幕日韩欧美一区二区三区| 欧美精品一区二区精品网| 91美女精品福利| 91碰在线视频|