rabbitMq實現與zookeeper類似的watcher功能


場景:A、B、C、D(可以是一個機器的不同進程,也可以是不同機器的進程)啟動了相同的項目,使用同一個數據庫。但是,如果A修改了數據庫的數據,需要B、C、D在很短的時間能夠知道數據庫發生了修改。當然可以在A、B、C、D上各啟動一個線程對數據庫進行監視,但是,這樣會消耗數據庫資源,不推薦采用這種方式。

解決方法:

1、使用ZK的watcher進行監視,此處不詳解。

2、使用rabbitMq的廣播模式進行監視。

3、其他消息發布訂閱框架

rabbitMq的廣播模式

1、建立連接工廠

2、生成隊列

3、生成廣播類型的交換機

4、綁定隊列與交換機

5、建立生產者進行消息發送

6、建立消費者對消息進行消費

理解:

rabbitMq在廣播模式下,可以將消息發送給所有與廣播交換機綁定的隊列(人手一份,相同的消息);

注意:此處的“人手一份”是指所有與交換機綁定的不同隊列,如果B、C、D使用的是同一個隊列,那么只能有一個會收到消息;

  因此,如果A、B、C、D使用的是同一個程序(例如web服務部署在不同的節點或者端口上),那么為了保證它們監視的隊列不同,就需要在生成隊列時加入唯一標識符(推薦UUID)

 

ps:代碼就不貼了,網上有許多類似的代碼。最后還是寫了一個demo,便於理解,詳情見下一篇博文。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM