exchangedeclare引數說明
queuedeclare引數說明
queuebind引數說明
basicpublish引數說明
通過**逐行分析api含義
/**
* 生產者
*/public
class
rabbitproduct
}
connectionfactory factory =
newconnectionfactory()
; factory.
sethost
(globalconstants.localhost)
; factory.
setport
(globalconstants.port)
; factory.
sethandshaketimeout
(globalconstants.timeout)
;//設定個超時時間,不然立馬報連線超時
factory.
setusername
("root");
factory.
setpassword
("root");
//建立連線
connection connection=factory.
newconnection()
;//建立頻道
channel channel=connection.
createchannel()
;
sethandshaketimeout翻譯為連線握手超時時間,預設為10000ms,根據當前網路和使用情況可以酌情修改
除了每個引數設值的連線建立方式,還有設定uri的形式:
factory.
seturil
("amqp:llusername:password@ipaddress:portnumber/virtualhost"
)
connection可以建立多個channel例項,但是channel例項不能在多執行緒間共享。某些情況下channel操作可以併發執行,但是在其他情況下會導致在網路上出現錯誤的通訊幀交錯,也會影響傳送方確認機制的執行,多執行緒共享channel例項是非執行緒安全
exchange:交換器名稱
type:交換器型別,常見fanout direct topic
durable:是否持久化 持久化在伺服器重啟時不會丟失相關資訊
autodelte:是否自動刪除 自動刪除的前提是至少有乙個佇列或者交換器與這個交換器繫結,之後所有與這個交換器繫結的佇列或者交換器都與此解綁。注意!不能錯誤的理解為:當與此交換器連線的客戶端都斷開時,rabbitmq會自動刪除本交換器
internal:「是否內建,如果設定成內建交換器,客戶端程式無法直接傳送訊息到這個交換器中,只能通過交換器路由到交換器這種方式
argument:其他一些結構化引數,如alternate-exchange
queue:佇列的名稱
durable:是否持久化
exclusive:是否排他,如果乙個佇列宣告為排他佇列,該佇列僅首次宣告它的連線可見,並在連線斷開時自動刪除。
排他佇列是基於連線可見的,同乙個連線的不同通道是可以同時訪問同一連線建立的排他佇列
「首次」是指如果乙個連線已經宣告了乙個排他佇列,其他連線是不允許建立同名的排他佇列的,這與普通佇列不同
即使佇列是持久化的,一旦連線關閉或者客戶端退出,該排他佇列都會被自動刪除,這種佇列適用於乙個客戶端同時傳送和讀取訊息的應用場景
autodelete:是否自動刪除,自動刪除的前提是:至少有乙個消費者連線到這個佇列,之後所有與這個佇列連線的消費者都斷開時,才會自動刪除。不能錯誤的理解為:當連線到此佇列的所有客戶端斷開就自動刪除
arguments:一些其他引數
queue:佇列名稱
exchange:交換器名稱
routingkey:繫結佇列和交換器的路由鍵
argument:定義繫結的一些引數
exchange:交換器名稱
routingkey:繫結佇列和交換器的路由鍵
props:其他引數的包裝類,可以使用new amqp.basicproperties.builder方式建立帶headers的和帶過期時間(expexpiration)的訊息
body:訊息本體
RabbitMQ生產者消費者模型
生產者 mport pika connection pika.blockingconnection pika.connectionparameters host 127.0.0.1 建立乙個例項 channel connection.channel 宣告乙個管道 channel.queue decl...
Kafka之生產者
1 方便在集群中擴充套件,乙個topic可以有多個partition組成,而每個partition可以通過調整以適應它所在的機器 2 可以提高併發,因為可以以partition為單位讀寫 我們需要將生產者傳送的資料封裝成乙個producerrecord物件。1 指明partition的情況下,直接將...
RabbitMQ 簡單的生產者 消費者模式
rabbitmq 是乙個訊息 它接受並 訊息。可以把它看成是乙個郵局 當你把你想要郵寄的郵件放在乙個郵筒裡時,你可以確信信使最終會把郵件送到您的收件人手中。在這裡,rabbitmq 充當了郵筒,郵局,信使的角色。rabbitmq 與郵局的主要區別在於它不處理紙張,他所做的僅僅只是接收 訊息。下面是r...