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...