• rabbitmq 学习


    rabbitmq的五种模式:

    1、Queue——简单队列  ,类似于Work Queue

    2、Work queue——Work模式 ,基于队列queue。不需要提前订阅,也可以消费。但是,消息只能被一个消费者消费。

    3、Publish/Subscribe——发布/订阅者模式 ,exchange=fanout。channel会把所有接收到的消息发送给所有订阅的消费者。消费者何时订阅消息,就从何时可是消费消息。

    4、Routing——路由模式 ,exchange=direct,routingKey不同。channel会把所有接收到的消息发送给对应的消费者。需要提前订阅消息。消费者何时订阅消息,就从何时可是消费消息。

    5、Topics——主题(通配符)模式,exchange=topic,routingKey不同。这个是对路由模式的灵活变通。Routing模式是全匹配,而Topics是模糊匹配。

          channel会把所有接收到的消息发送给匹配的消费者。需要提前订阅消息。消费者何时订阅消息,就从何时可是消费消息。topic模式下,有两个通配符:* 、#   。其中,* 是匹配任意一个字符,而#是表示匹配任意的0-N个字符。

    从上面可以看出,这五种模式,又可以分为两种模式:queue模式--不需要提前订阅,只能消费一次;发布/订阅模式,需要提前订阅,可以多个消费者同时消费

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    rabbitmq 的注意点:

    1、队列声明了自后,就不再被允许修改参数,只能重新建立一个队列
    2、队列的声明需要在生产者和消费者两(多(个消费者))端同时声明
    3、声明队列的时候,只有队列不存在的时候,才会新增一个队列

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    rabbitmq 的日志文件位置:/usr/local/rabbitmq/var/log/rabbitmq

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    rabbitmq 的配置文件

    文件路径:/usr/local/rabbitmq/etc/rabbitmq/rabbitmq.conf 下面,这个文件默认不存在,可以自己手动新建。其中,/usr/local/rabbitmq 这个是安装的路径

    配置文件的核心参数:

    1、management.listener.port = 15672    --监听端口

    2、stomp.num_acceptors.tcp = 10         --默认的tcp链接

    3、handshake_timeout = 10000            --最大链接时间,单位:ms

    4、listeners.ssl

    5、num_acceptors.ssl=1                       --接受来自客户机的TLS连接的Erlang进程的数量。

    6、ssl_handshake_timeout=5000        --ssl最大链接时间,单位:ms

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    rabbitmq 集群

    1、rabbitmq 没有主从节点区别

    2、rabbitmq使用cookie来决定节点间是否能通信。多个节点之间要通信,必须拥有相同的、被称为Erlang cookie的密钥。这个密钥是一个小于255长度的普通字符串,通常存在一个本地的文件中。这个密钥只能被所有者操作。(

         因为是使用root解压缩安装,所以这个文件放在root下面,路径是:/root/.erlang.cookie)

    3、如论采取何种协议,rabbitmq 客户端同一时刻只能操作一个节点

    4、如果一个节点挂了,客户端会自动连接到其他节点,并且集群其他节点会重新覆盖(学习)拓扑关系。节点加入或者重新覆盖的时候,host的列表会被记录到每一个节点。

    5、建议使用LAN 而不是WAN来进行集群通信。如果要使用WAN,建议使用Shovel或者Federation 插件。注意使用Shovel 或 Federation 不等同于集群。

    6、集群节点命名,是rabbit@+short host name,如rabbit@server1。在linux环境中,节点名称是小写,而在windows 环境中,则是rabbit@ +大写的 short host name

    7、新节点加入集群的时候,新节点必须先暂停,在加入之后再启动节点。一般的步骤是:停止(stop)节点、重置(reset)节点、加入(join)集群、启动(start)节点

        这意味着,新节点不能在加入集群的同时,又拥有集群里其他节点的同步数据。要解决这个问题,可以采取 Blue/Green deploymentt strategy(蓝/绿 部署策略)或 backup and restore(备份存储)

    8、cluster_status  查看rabbitmq 节点集群

    9、节点停止后,节点会尝试连接集群10次,超时时间30秒,也就是说,30秒内连接成功,则启动节点。否则,失败。

    10、节点停止后,如果没有同级节点,则它启动的时候,不会尝试连接其他节点。但是,这并不意味着,这是一个节点,因为它是集群的性质的,其他的节点可加入这个集群。

    11、节点B停止后,如果改变了它本身的host名称和节点名称,则它重启后,将不能加入集群中,集群的其他节点A和C也不会再认识它。这时候,再次重启B或者重启A,可以让几点B再次加入集群中。

    12、节点尝试连接同级节点的默认时间是5分钟,这个可配置

  • 相关阅读:
    使用百度字体编辑器删除不必要字体,减少字体文件体积
    使用npm安装webpack失败时,可能被墙要为cmd命令行设置代理
    让字体图标代替雪碧图,减少请求带宽
    隐藏浏览器原生的滚动条
    台式机安装CentOS7.6 Minimal ISO系统并增加图形化桌面
    像我这样笨拙地生活(廖一梅)--节选
    随心随意亦舒经典语录
    file / from install of XXX conflicts with file from package filesystem-XXX
    nginx代理php项目的websocket
    Redis4配置文件详解
  • 原文地址:https://www.cnblogs.com/drafire/p/10071552.html
Copyright © 2020-2023  润新知