RabbitMQ之Exchange交換機
阿新 • • 發佈:2018-12-10
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: app_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(); Map<String, Object> headers = 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屬性說明:
- x-message-ttl: 釋出到佇列的訊息在丟棄之前可以存活多長時間(單位:毫秒)
- x-expires: 在自動刪除佇列之前可以使用多長時間(單位:毫秒)
- x-max-length: 在佇列開始從佇列中刪除之前,佇列可以包含多少(就緒)訊息(單位:個)
- x-max-length-bytes: 佇列在開始從頭部刪除之前可以包含的就緒訊息的總體大小。)
- x-overflow: 設定佇列溢位行為。這個決定了在達到佇列的最大長度是訊息會發生什麼。有效值為
drop-head
或reject-publish
。 - x-dead-lettler-exchange:如果傳送的訊息被拒絕或過期,將重新發布訊息的交換機的可選名稱。
- x-dead-letter-routing-key: 當傳送的訊息無效時可選替換的路由金鑰。如果未設定,將使用訊息的原始Routing-key
- x-max-priority: 設定佇列的最大優先順序數;如果未設定,則佇列將不支援訊息優先順序
- x-queue-mode: 將佇列設定為延遲模式,在磁碟上保留儘可能多的訊息已減少RPM使用。如果未設定,佇列將保留記憶體快取已儘快傳遞訊息。 延遲模式。
- x-queue-master-locator: 將佇列設定為主位置模式,確定在節點叢集上宣告時佇列主機所在的規則。