RabbitMQ 和訊息傳遞常用一些術語

2021-08-31 18:43:14 字數 1143 閱讀 7961

rabbitmq 是乙個訊息**:它接受和**訊息。你可以把它想象成乙個郵局:當你把你想要投寄的郵件放在乙個郵箱裡時,你可以確定收信人先生或女士最終會把郵件寄給你的收件人。在這個模擬中,rabbitmq是乙個郵箱、乙個郵局和乙個郵遞員。

rabbitmq 與郵局的主要區別在於它不處理紙張,而是接收、儲存和**二進位制資料塊——訊息。

生產就是傳送,傳送訊息的程式是生產者。

佇列是位於 rabbitmq 內的郵箱的名稱。儘管訊息流經 rabbitmq 和應用程式,但它們只能儲存在佇列中。佇列只受主機的記憶體和磁碟限制,它本質上是乙個大的訊息緩衝區。許多生產者可以向乙個佇列傳送訊息,許多消費者可以嘗試從乙個佇列接收資料。

消費與接受有著相似的含義。消費者是乙個主要等待接收訊息的程式。

交換器必須確切地知道如何處理接收到的訊息。它應該附加到特定的佇列嗎?它應該附加到許多佇列中嗎?或者它應該被丟棄。這些規則由 exchange types 型別定義。

exchange types:direct, topic, headers,fanout
繫結是用於將訊息路由到佇列的交換規則。為了指示exchange e將訊息路由到佇列q,q必須繫結到e。某些exchange type可以使用乙個可選的路由鍵屬性。routing key的目的是指定這個訊息的路由規則。換句話說,routing key鍵就像乙個過濾器。

如果amqp訊息不能路由到任何佇列(例如,因為它發布到的交換器沒有繫結),那麼它要麼被刪除,要麼返回給發布者,這取決於發布者設定的訊息屬性。

生產者在將訊息傳送給 exchange 的時候,一般會指定乙個 routing key,來指定這個訊息的路由規則,而這個 routing key 需要與 exchange type 及 binding key 聯合使用才能最終生效。在 exchange type 與 binding key 固定的情況下(在正常使用時一般這些內容都是固定配置好的),我們的生產者就可以在傳送訊息給 exchange 時,通過指定 routing key 來決定訊息流向**。rabbitmq 為 routing key 設定的長度限制為255 bytes。

rabbitmq訊息重新入隊和訊息確認

為了確認訊息不會丟失,rabbitmq支援message acknowledgments。乙個ack的響應會從消費端返回,告訴rabbitmq乙個特定的訊息已被接收。當rabbitmq空閒時會處理它,將它刪除。如果乙個消費者掛掉 channel被關閉 connection被關閉或者tcp 連線被關閉...

訊息佇列 Kafka和rabbitMQ

0.建立topic bin kafka topics.sh create zookeeper localhost 2181 replication factor1 partitions1 topic test 1.檢視kafka topic列表 bin kafka topic.sh zoopkeep...

訊息佇列 RabbitMQ和Kafka

2種模式 點對點 consumer主動對queue監控,檢查是否收到訊息 優點 解耦 通過中介軟體通訊 冗餘 可做快取 擴充套件性順序保證 非同步通訊 consumer即使down掉,訊息還是儲存在queue,等consumer恢復會自動處理訊息 關於broker裡的exchange不可以直接將訊息...