RabbitMq開發嚮導之生產者(入門)

2021-08-29 02:01:51 字數 2201 閱讀 7278

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