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

  • 相关阅读:
    centos7的变化(转)
    配置邮件报警功能(脚本方式)
    临时和永久关闭Selinux
    centos7.2安装apache比较简单,直接上代码
    zabbix--------配置邮件报警功能---服务器上配置---------
    初来驾到学java修饰符的使用
    面向对象小小理解
    出来驾到学java3
    出来驾到学java2
    初来驾到学JAVA
  • 原文地址:https://www.cnblogs.com/songxh-scse/p/7241137.html
Copyright © 2020-2023  润新知