3.RABBITMQ_6种工作模式

RabbitMQ的基本结构

rabbitmq基本结构

1. Simple工作模式

simple简单模式

  • 不用显示声明交换机,只需声明一个队列
  • 生产者指定队列名发送消息给mq,然后会有一个默认的交换机将消息转发给这个队列。
  • 消费者负责监听这个队列,一有消息就会得到通知做出响应。
  • golang代码示例

simple简单模式代码

2. 工作队列模式(Work queues)

工作队列模式

  • 和简单队列模式基本一样,不过有一点不同,该模式有多个消费者在监听队列。
  • rabbitmq会以轮询的方式将消息发给多个消费者确保一条消息只会被一个消费者消费
  • 任务分发默认使用的是公平队列调度的原则
  • golang代码示例

工作队列模式代码

3. 发布订阅模式(Publish/subscribe)

发布订阅模式

  • 和上面2种模式默认提供交换机不同的是,该模式需要显示声明交换机,
  • 然后可以创建多个队列和这个交换机进行绑定。
  • 生产者发消息给mq时需要指定交换机,然后交换机将消息转发给与自己绑定的所有队列
  • 消费者监听指定的队列获得消息。每个队列可以有多个消费者监听,同样也是以轮询的机制发给消费者
  • 实际使用Exchange的广播路由模式(Fanout)
  • goalng代码示例

发布订阅模式代码

4. Routing 模式

Routing模式

  • 生产端指定消费者进行消费
  • 和发布订阅模式不同的是,队列绑定交换机时需要指定一个routingkey
  • 生产者端通过指定routingkey参数来指定消费端进行消费
  • golang代码示例

routing路由模式代码

5. Topic模式(路由模式的一种)

主题模式

  • 星号井号代表通配符,星号代表多个单词,井号代表一个单词
  • 路由功能添加模糊匹配
  • 消息产生者产生消息,把消息交给交换机,交换机根据key的规则模糊匹配到对应的队列,由队列的监听消费者接收消息消费
  • goalng代码示例

主题模式代码

6. heard模式

省略

7. 参数解释:

  • Queue相关:

    • durable:bool
      控制消息是否持久化,如果为false,服务器重启之后消息丢失
    • autoDelete: bool
      是否自动删除,当我们最后一个消费者断开连接的时候,是否将消息从队列从删除
    • exclusice: bool
      是否具有排他性,队列只有自己可见,其他用户看不到
    • nowait: bool
      是否阻塞,发送消息是否等服务端返回
  • Publish相关

    • mandatory:bool
      如果为true,会根据exchange类型,和routingkey规则如果无法找到符合条件的*队列,会把发送的消息返回给发送者
    • immediate: bool
      如果为true,当exchange发送消息到队列后发现队列上没有绑定消费者,则会把消息返回给发送者
  • Consume相关

    • autoAck: bool
      是否自动应答,设置为true消息消费完会主动告诉broker,如果设置为false,需要实现回调函数
    • exclusive: bool
      是否具有排他性,队列只有自己可见,其他用户看不到
    • noLocal: bool
      如果设置为true,表示不能将同一个connection中发送的消息传递给这个connection中的消费者
    • nowait:bool
      是否阻塞消费
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

q375923078

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值