Rabbit mq訂閱方式獲取訊息並可設定持久化

2021-09-07 14:16:07 字數 1205 閱讀 6338

rabbit 通過方式獲取訊息:訂閱方式事實上是向queue註冊consumer,通過rpc向queue server傳送註冊consumer的訊息。rabbitmq server在收到訊息後,依據訊息的內容型別推斷這是乙個訂閱訊息。這樣當mq 中queue有訊息時,會自己主動把訊息通過該socket(長連線)通道傳送出去。

能夠通過

channel.basicqos(1);
設定rabbitmq排程分發訊息的方式。也就是告訴rabbitmq每次僅僅給消費者處理一條訊息。也就是等待消費者處理完而且已經對剛才處理的訊息進行確認之後, 才傳送下一條訊息。防止消費者太過於忙碌。例如以下圖所看到的:

整理**例如以下:

produce

public class rabbitmqproduce 

byte messagebodybytes =(i+"").getbytes();

//假設將佇列設定為持久化之後,還須要將訊息也設為可持久化的。messageproperties.persistent_text_plain

//也就是將佇列設定為持久化之後。還須要將傳送的訊息也要設定為持久化才幹保證佇列和訊息一直存在

//消費者在宣告時也要做持久化宣告

channel.basicpublish(exchange, routingkey, null, messagebodybytes);

system.out.println("傳送.."+i);

}channel.close();

conn.close();

}}

customer

public class rabbitmqcustomer  catch (exception e) }}

@override

public void handledelivery(string consumertag, envelope envelope,

basicproperties properties, byte body) throws ioexception

});} public static void start() throws ioexception

}

RabbitMQ 發布 訂閱

rabbitmq 中訊息傳遞模型的核心思想是 生產者永遠不會將任何訊息直接傳送到佇列。實際上,生產者通常甚至不知道訊息是否會被傳遞到任何佇列。相反,生產者只能向交易所 exchanges 傳送訊息。交換是一件非常簡單的事。一方面,它接收來自生產者的訊息,另一方面將它們推送到佇列。交易所必須確切知道如...

rabbitmq 發布訂閱模式

上篇我們已經講過了工作模式和簡單模式的用法。而這節我們就要開始講一下後面三種的第一種,在我們平常開發中,其實用的比較多的是後面的這三種。發布訂閱模式 英文叫publish subscribe,發布訂閱模式也稱為廣播模式,在exchange下屬於fanout模式。廣播,大家應該都知道吧,在mq中,其實...

RabbitMQ之訂閱模式

rabbitmq之訂閱模式簡介 乙個生產者,多個消費者 每乙個消費者都有自己的佇列 生產者沒有直接將訊息傳送到佇列中去,而是傳送到了交換機或者 器 exchange 中 每個佇列都要繫結到交換機上 生產者傳送的訊息,經過互動機到達佇列就能實現乙個訊息被多個消費者消費 參考 生產者 訂閱模式 auth...