rabbitmq 学习

Posted drafire

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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、集群节点命名,是[email protected]+short host name,如[email protected]。在linux环境中,节点名称是小写,而在windows 环境中,则是[email protected] +大写的 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分钟,这个可配置

 



以上是关于rabbitmq 学习的主要内容,如果未能解决你的问题,请参考以下文章

RabbitMQ学习--RabbitMQ集群相关学习

RabbitMQ学习系列: RabbitMQ安装与配置

RabbitMQ学习系列: RabbitMQ安装与配置

RabbitMQ学习和使用

RabbitMQ简单学习笔记

RabbitMQ学习笔记