RabbitMQ之Exchange交換機

2021-08-30 17:50:48 字數 1813 閱讀 5517

rabbitmq中的exchange的作用

訊息佇列,訊息通過傳送和exchange之後最終到達的地方,到達queue的訊息及進入了等待消費的狀態。每個訊息都會被傳送到乙個或多個佇列。

佇列的常用屬性

name: 佇列的名稱

durability: 是否需要持久化,true為持久化

auto delete: 當最後乙個繫結到exchange上的佇列刪除後,自動刪除該exchange

message-訊息

伺服器和應用程式之間傳送的資料

本質上就是一段資料,由properties和payload(body)組成

messsage中的常用屬性

delivery mode: 送達模式

headers:訊息的頭資訊

content_type: 內容的型別

content_encoding: 內容的編碼格式

priority: 訊息的優先順序

correlation_id: 一般用作訊息的唯一id來做

reply_to: 訊息失敗後可以返回到對應的哪個佇列中

expiration: 訊息的過期時間

message_id: 訊息的id

# 自定義的資料型別

timestamp: 時間戳

type: 型別

user_id:

cluster_id:

message實際**上手
connectionfactory connectionfactory = new connectionfactory();

connectionfactory.sethost("114.67.224.231");

connectionfactory.setusername("guest");

connectionfactory.setpassword("guest");

connectionfactory.setvirtualhost("/");

connection connection = connectionfactory.newconnection();

channel channel = connection.createchannel();

mapheaders = new hashmap<>();

headers.put("ocean0","1");

headers.put("ocean1","2");

amqp.basicproperties properties = new amqp.basicproperties.builder()

.deliverymode(2)//設定訊息是否持久化 2:持久化 1:非持久化

.contentencoding("utf-8")

.expiration("15000") //過期時間 單位:毫秒

.headers(headers) //headers中儲存的是自定義屬性

.build();

//通過channel通道來傳送訊息

string msg = "hello rabbitmq!";

//注意:此時如果不指定交換機名稱,則預設走default amqp交換機進行路由

channel.basicpublish("","test001",properties,msg.getbytes());

//關閉連線

channel.close();

connection.close();

message中的arguments屬性說明:

Spring Boot 之RabbitMQ安裝步驟

參考位址 rabbit mq 是建立在erlang otp平台上的,所以在安裝rabbitmq之前先安裝erlang。安裝完成後,新增系統環境變數erlang home,值是安裝路徑 預設安裝的rabbitmq 監聽埠是5672 在命令視窗輸入 e program files rabbitmq se...

RabbitMQ之訂閱模式

rabbitmq之訂閱模式簡介 乙個生產者,多個消費者 每乙個消費者都有自己的佇列 生產者沒有直接將訊息傳送到佇列中去,而是傳送到了交換機或者 器 exchange 中 每個佇列都要繫結到交換機上 生產者傳送的訊息,經過互動機到達佇列就能實現乙個訊息被多個消費者消費 參考 生產者 訂閱模式 auth...

RabbitMQ之(延遲佇列)

什麼是延時佇列,延時佇列應用於什麼場景 延時佇列顧名思義,即放置在該佇列裡面的訊息是不需要立即消費的,而是等待一段時間之後取出消費。那麼,為什麼需要延遲消費呢?我們來看以下的場景 rabbitmq的queue可以配置x dead letter exchange和x dead letter routi...