RabbitMQ - SpringBoot 案例 - topic 模式

项目架构如下

RabbitMQ - SpringBoot 案例 - topic 模式

服务层代码如下

可以直接在注解上进行定义队列与交换机关系

@Service
@RabbitListener(bindings = @QueueBinding(
        value = @Queue(value = "email.topic.queue",durable = "true",autoDelete = "false"),
        exchange = @Exchange(value = "topic_order_exchange",type = ExchangeTypes.TOPIC),
        key = "*.email.#"
))
public class TopicEmailConsumer {
    @RabbitHandler
    public void receiveMessage(String message) {
        System.out.println("email fanout--接收到的订单信息是:->" + message);
    }
}

@Service
@RabbitListener(bindings = @QueueBinding(
 value = @Queue(value = "sms.topic.queue",durable = "true",autoDelete = "false"),
  exchange = @Exchange(value = "topic_order_exchange",type = ExchangeTypes.TOPIC),
  key = "#.sms.#"
))
public class TopicSMSConsumer {
  @RabbitHandler
  public void receiveMessage(String message) {
  System.out.println("sms fanout--接收到的订单信息是:->" + message);
  }
}

@Service
@RabbitListener(bindings = @QueueBinding(
 value = @Queue(value = "weChat.topic.queue",durable = "true",autoDelete = "false"),
  exchange = @Exchange(value = "topic_order_exchange",type = ExchangeTypes.TOPIC),
  key = "weChat.#"
))
public class TopicWeChatConsumer {
  @RabbitHandler
  public void receiveMessage(String message) {
  System.out.println("weChat fanout--接收到的订单信息是:->" + message);
  }
}

这里使用的是 RabbitMQ 提供的注解的方式来进行队列和交换机进行绑定,启动消费者,可以看到创建了 Topic 类型的交换机,并且进行了交换机的绑定。

RabbitMQ - SpringBoot 案例 - topic 模式

消费者代码如下

public void makeOrderTopic(String userId,String productId,int num) {
        // 1:根据id查询商品是否充足
        // 2:保存订单
        String orderId = UUID.randomUUID().toString();
        System.out.println("订单生成成功:"+orderId);
        // 3:通过 MQ 来完成消息的分发
        // 交换机,路由 key/queue 队列名称,消息内容
        String exchangeName = "topic_order_exchange";
        String routingKey = "com.email.sms";
        rabbitTemplate.convertAndSend(exchangeName,routingKey,orderId);
    }

RabbitMQ - SpringBoot 案例 - topic 模式

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
247
粉丝
18
喜欢
217
收藏
62
排名:731
访问:9753
私信
所有博文
社区赞助商