rabbitMq實現與zookeeper相似的watcher功能

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

解決方法:數據庫

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

二、使用rabbitMq的廣播模式進行監視。線程

三、其餘消息發佈訂閱框架隊列

rabbitMq的廣播模式進程

一、創建鏈接工廠資源

二、生成隊列部署

三、生成廣播類型的交換機it

四、綁定隊列與交換機程序

五、創建生產者進行消息發送

六、創建消費者對消息進行消費

理解:

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

注意:此處的「人手一份」是指全部與交換機綁定的不一樣隊列,若是B、C、D使用的是同一個隊列,那麼只能有一個會收到消息;

  所以,若是A、B、C、D使用的是同一個程序(例如web服務部署在不一樣的節點或者端口上),那麼爲了保證它們監視的隊列不一樣,就須要在生成隊列時加入惟一標識符(推薦UUID)

 

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

相關文章
相關標籤/搜索