0
点赞
收藏
分享

微信扫一扫

Rabbitmq知识总结

逸省 2022-04-13 阅读 48

AMQP 是应用层协议的一个开放标准,为面向消息的中间件设计。 基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。 目标是实现一种在全行业广泛使用的标准消息中间件技术,以便降低企业和系统集成的开销,并且向大众提供工业级的集成服务。 主要实现有 RabbitMQ。

常见问题

Rabbitmq的四个部分->生产者、交换器、队列、消费者

生产者:消息的创建者,发送到rabbitmq

交换器:用于消息的分发

队列:用于存放消息的队列

消费者:连接到rabbitmq,订阅到队列上,消费消息,持续订阅(basicConsumer)和单条订阅(basicGet)

生产者

        事务模式

        事务的实现主要是对信道(Channel)的设置,主要的方法有三个:
            1.channel.txSelect()声明启动事务模式;
            2.channel.txComment()提交事务;
            3.channel.txRollback()回滚事务;
        但是事务在rabbitmq中效率很低,所以不建议使用,可以用失败确认和发送方确认模式代替。

        确认模式
        原理:生产者将信道设置成confirm模式,一旦信道进入confirm模式,所有在该信道上面发布的消息都将会被指派一个唯一的ID(从1开始),由这个id在生产者和RabbitMQ之间进行消息的确认。
        Confirm的三种实现方式:
            方式一:channel.waitForConfirms()普通发送方确认模式;消息到达交换器,就会返回true。
            方式二:channel.waitForConfirmsOrDie()批量确认模式;使用同步方式等所有的消息发送之后才会执行后面代码,只要有一个消息未到达交换器就会抛出IOException异常。
            方式三:channel.addConfirmListener()异步监听发送方确认模式;

交换器

交换器的四种类型:direct,fanout,topic,headers,其种headers(几乎和direct一样)不实用,可以忽略。

  • fanout 发送到所有绑定的队列
  • direct Routing Key 和 Binding Key 完全一致
  • topic Routing Key 用.间隔分开 Routing Key com.rabbitmq.client
    • Bind Key可以存在模糊匹配 * 一个    #多个 com.# 或 com.*.*

交换器路由不到消息,那么消息会被丢弃

队列

       普通队列

        用于正常存储消息的队列

        死信队列

                消息变成死信一般是以下几种情况:

                        1.消息被拒绝,并且设置 requeue 参数为 false 2.消息过期(单个或队列设置过期时间) 3.队列达到最大长度(默认无限长度)

        延迟队列

        Rabbitmq没有延迟队列的功能,通过使用普通队列对消息设置过期时间,再路由到死信队列中消费从而实现死信队列

消费者

每个消息只会发送给一个消费者

拉取Get:属于一种轮询模型,发送一次get请求,获得一个消息。

推送Consume:属于一种推送模型。注册一个消费者后,RabbitMQ会在消息可用时,自动将消息进行推送给消费者。

自动确认: 消费者在声明时,可以指定autoAck参数,当autoAck=true时,一旦消费者接收到了消息,就视为自动确认了消息。

手动确认:当autoAck=false时,RabbitMQ会等待消费者显式发回ack信号后才从内存(和磁盘,如果是持久化消息的话)中移去消息。

拒绝消息

当消费消息的时候不是我们想要处理的情况下,可以当前消息的消费

Reject一次只能拒绝一条消息。
Nack则可以一次性拒绝多个消息

消费幂等性

一个数据,重复来多次,得确保对应的数据是不会改变的,不能出错

1.全局唯一id

2.数据库唯一索引

消息持久化

生产者 delivery rnode 设置为 表示消息需要持久 处理。

交换者 durable=true 

队列 durable=true

消费者 ack=false

rabbitmq的管理

终端:rabbitmqctl

web管理页面

参考来源:

《Rabbitmq实战指南》

举报

相关推荐

0 条评论