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,便于理解,详情见下一篇博文。

相关文章
相关标签/搜索