java rabbitmq 绑定_RabbitMQ:交换,队列和绑定 - 谁设置了什么?
當(dāng)使用RabbitMQ發(fā)送消息時,您基本上有交換,隊列和綁定 . 我理解他們的想法以及他們?nèi)绾蜗嗷ヂ?lián)系,但我不確定是誰設(shè)置了什么 .
基本上,我的應(yīng)用程序中有三個場景 .
場景1:一個發(fā)布者,多個工作進(jìn)程
我想要實現(xiàn)的是一個將消息發(fā)送到隊列的組件,并且應(yīng)該有幾個處理該隊列中的項的工作進(jìn)程 . 這對我來說似乎很容易 . 設(shè)置如下:
交換:1交換類型'direct'
隊列:1個隊列
綁定:隊列綁定到交換機(jī)
每當(dāng)將消息發(fā)送到交換機(jī)時,它就會被傳遞到隊列,并且工作進(jìn)程會完成其任務(wù) .
一切都應(yīng)該是耐用的 .
那么誰設(shè)置了什么?在我看來:
制片人創(chuàng)造交流
生產(chǎn)環(huán)境 者創(chuàng)建隊列(因為當(dāng)前可能沒有正在運行的工作進(jìn)程,如果沒有隊列,則消息將丟失)
Producer將隊列綁定到交換機(jī)
消費者只是聽隊列
對?
場景2:一個發(fā)布者,多個訂閱者,易失性消息
第二種情況完全不同 . 基本上,它是一個發(fā)布/子方案,其中每條消息都發(fā)送到每個當(dāng)前正在偵聽的客戶端 . 如果客戶端脫機(jī),它不再接收消息,并且不會存儲在任何地方 . 這意味著以下設(shè)置:
交換:1交換類型'fanout'
隊列:n個隊列,每個消費者一個隊列
綁定:每個隊列都需要綁定到交換機(jī)
那么誰設(shè)置了什么?在我看來:
制片人創(chuàng)造交流
Consumer創(chuàng)建隊列(因為它是自己的隊列, 生產(chǎn)環(huán)境 者無法知道誰對這些消息感興趣)
Consumer為其隊列創(chuàng)建綁定到交換
Consumer偵聽其隊列
對?
場景3:一個發(fā)布者,多個訂閱者,持久消息
與方案2基本相同,但如果消費者離線,則不應(yīng)丟失消息 . 在我看來,這不應(yīng)該改變?nèi)魏问虑?- 對嗎?
總結(jié)
以上是生活随笔為你收集整理的java rabbitmq 绑定_RabbitMQ:交换,队列和绑定 - 谁设置了什么?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java trrows处理_java 1
- 下一篇: java用tkmapper分组查询_my