RabbitMQ 入门之发布订阅模式

前面已经提过了引入 MQ 的优点,解耦、异步和流量削峰,这里不再赘述。

RabbitMQ 的结构

RabbitMQ 有几个个概念:

  • RoutingKey 路由键,在发布订阅模型中根据 RoutingKey 可以找到具体队列。
  • Publisher 生产者,生产消息发送给 Exchange(如果没有 Exchange 就直接发送发到 Queue)。
  • Exchange 交换机,根据与 Queue 绑定的 BindingKey 将消息发送到 Queue(BindingKey 与 RoutingKey 概念相似)。
  • Queue 队列,Exchange 将消息发送到 Queue 后,消息暂存在 Queue 内,等待 消费者消费。
  • Consumer 消费者,监听具体队列,从队列中获取消息后消费消息。

总结:生产者面向 Exchange 和 Queue 编程。消费者面向Queue 编程。

RabbitMQ 的六种模式

RabbitMQ 有六种模式:

  • 简单模式:无交换机,一个队列只能连接一个消费者。
  • 工作模式:无交换机,一条队列能有连接多个消费者。
  • 广播模式:交换机将接收到的消息路由到每一个跟其绑定的队列。
  • 路由模式:交换机将接收的消息根据规则路由到指定的队列。
  • 主题模式:交换机将接收到的消息,根据匹配路由到队列。路由键必须是多个单词的列表,使用 ‘.’ 分割。
  • RPC 模式:调用远程方法需要等待结果时可用。

发布订阅模式包含了广播模式、路由模式和主题模式。都是多个生产者多个消费者模式,通过 RoutingKey 来进行路由。

SpringAMQP

SpringAMQP 是在 Spring 框架中整合了 AMQP 规则,可以进行队列配置操作。

声明队列和交换机,并将两者进行绑定。有两种方式,第一种 @Bean 进行类配置,第二种 @RabbitListener 进行注解配置。

类配置方式:

	// 声明 FanoutExchange 交换机
    @Bean
    public FanoutExchange fanoutExchange() {
   
        return new FanoutExchange("itcast.fanout");
    }
    // 声明队列
    @Bean
    public Queue fanoutQueue() {
   
        return new Queue("fanout.queue");
    }
    // 绑定队列和交换机
    @Bean
    public Binding bindingQueue1(Queue fanoutQueue1, FanoutExchange fanoutExchange) {
   
        return BindingBuilder.bind(fanoutQueue).to(fanoutExchange);
    }

注解方式:

	@RabbitListener(bindings = @QueueBinding(
            value = @Queue(name = "direct.queue2"), // 监听队列
            exchange = @Exchange(name = "itcast.direct"
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值