rabbitmq实战记录

环境安装:

1、下载服务器包

2、解压到测试文件夹下

3、设置必需的文件夹结构

/var/log/rabbitmq

/var/lib/rabbitmq/mnesia/rabbit

4、启动rabbitmq服务器  rabbitmq-server

5、检查服务器状态 rabbitmqctl status

消息:

有效载荷,可为任何内容

标签,描述有效载荷,rabbitmq用它决定谁将获得消息拷贝

信道:

应用程序和rabbit服务器创建后(通过认证)——》应用程序创建信道,信道是建立在“真实”TCP连接内的虚拟连接

AMQP通过信道将信息发送出去,每条信道都会被指派一个唯一的ID,在一条TCP连接上创建多少信道是没有限制的

发布消息,订阅队列,接收消息都是通过信道完成的

AMQP消息路由组成:交换器,队列和绑定

生产者把消息发布到交换器上,消息最终到达队列,并被消费者接收

绑定决定了消息如何从路由器路由到特定队列

消费者接收消息2种方式:

1、basic.consume

2、basic.get

Rabbit队列有多个消费者,消息以循环方式发送给消费者

消费者接收到每条消息必须进行确认

1、basic.ack

2、auto_ack

拒绝消息:basic.reject

在消息确认前,如果消费者断开连接后,rabbit会把消息投递给下一个消费者

队列是AMQP通信的基础模块:

1、为消息提供处所,消息在些等待消费

2、对负载均衡来说,队列是绝优方案,只需附加一堆消费者,并让RabbitMA以循环方式分配消息

3、队列是Rabbit中消息终点,除非消息进入黑洞

队列通过路由键绑定到交换器

服务器根据路由键将消息从交换器路由到队列

交换器类型:

direct

fanout

topic

AMQP架构中最关键的几个组件分别是交换器,队列和绑定

根据绑定规则将队列绑定到交换器

消息是发布到交换器的

有3种类型的交换器:direct fanout topic

基于消息路由键和交换器类型,服务器会决定将消息投递到哪个队列去

队列路由键更像是一种地址,标记

vhost:

相互隔离

rabbitmqctl add_vhost name

rabbitmqctl delete_vhost name

rabbitmqctl list_vhosts

持久化:

1、将投递模式选项设置为2

2、发送到持久化交换器

3、到达持久化队列

事务:

1、把信道设置为事务模式

2、发送方确认模式,将信道设为 confirm

开发:

发布者:

连接到时rabbitmq

获取信道

声明交换器

创建消息

发布消息

关闭信道

关闭连接

消费者:

连接到时rabbitmq

获取信道

声明交换器

声明队列

把队列和交换器绑定起来

消费消息

关闭信道

关闭连接

理解消息路由工作机制

把每个队列想象成节点上运行的进程,每个有自己进程ID,交换器不过是路由模式列表和匹配消息就发往的队列进程ID列表,当发布的消息匹配了交换器中的绑定规则时,实际上是由信道完成匹配工作,并在匹配之后建立到队列PID的连接,然后将消息传送过去,队列的进程ID本质是其在Erlang的地址。简单说,交换器是查询表,信道完成分配

https://github.com/m2492565210/rabbitmqwithpython3

原文地址:https://www.cnblogs.com/m2492565210/p/8622344.html