rabbitmq詳解
1. direct exchange
direct exchange是rabbitmq預設的交換機模式,也是最簡單的模式,根據key全文匹配去尋找佇列。
q1 繫結了乙個binding key
名字為orange
;
q2 就有 2 個binding key
,名字為black
和green
。
當訊息中的 路由鍵 和 這個 binding key 對應上的時候,那麼就知道了該訊息去到哪乙個佇列中。
channel channel = connection.createchannel();
channel.exchangedeclare("retry_payment", "direct"); //宣告乙個交換機,direct 可以換位topic或者是fannout
channel.queuedeclare("retry_payment"); //宣告乙個佇列
channel.queuebind("queuename", "exchangename", "routingkey"); //繫結路由鍵
//需要繫結路由鍵,傳送訊息
byte messagebodybytes = "hello world"
.getbytes();
channel.basicpublish("exchangename", "routingkey", messageproperties.persistent_text_plain, messagebodybytes);
2.topic exchangetopic exchange **訊息主要是根據萬用字元。 在這種交換機下,佇列和交換機的繫結會定義一種路由模式,那麼,萬用字元就要在這種路由模式和路由鍵之間匹配後交換機才能**訊息。
在這種交換機模式下:
具體**傳送的時候還是一樣,第乙個引數表示交換機,第二個引數表示routing key,第三個引數即訊息。如下:
rabbittemplate.convertandsend("testtopicexchange","key1.a.c.key2", " this is rabbitmq!");
topic 和 direct 類似, 只是匹配上支援了」模式」, 在」點分」的 routing_key 形式中, 可以使用兩個萬用字元:
3.fanout exchange
不處理路由鍵。你只需要簡單的將佇列繫結到交換機上。乙個傳送到交換機的訊息都會被**到與該交換機繫結的所有佇列上。很像子網廣播,每台子網內的主機都獲得了乙份複製的訊息。fanout交換機**訊息是最快的。
傳送訊息,只需要指定交換機,route key
可以為空
給訊息設定屬性值
設定請求頭或者編碼
messageproperties messageproperties=message.getmessageproperties();
kafka的Topic和日誌
kafka中所有訊息是通過topic為單位進行管理,每個kafak的topic通常會有多個訂閱者,負責訂閱傳送到該topic的資料。kakfa負責管理集群中每個topic的一組日誌分割槽資料 生產者將資料傳送到相應的topic。負責定址將哪個分割槽傳送到topic的哪個partion?例如 roun...
Topic匹配模式
topic型別的交換器允許在rabbitmq中使用模糊匹配來繫結自己感興趣的資訊 星號 表示乙個單詞 井號 表示零個或者多個單詞 傳送訊息 for string severity routingkeys catch exception e finally catch exception ignore...
徹底刪除topic
1 刪除kafka儲存目錄 server.properties檔案log.dirs配置,預設為 tmp kafka logs 相關topic目錄 2 kafka 刪除topic的命令是 bin kafka topics delete zookeeper zookeeper server topic ...