rabbitMq整合springboot的使用流程

1.安装rabbitmq

  • 使用docker 的方式创建rabbitMq
#创建容器启动
docker run -d --restart=always -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:3.8-management
  • 访问rabbitMq管理后台
管理后台:http://IP:15672

在这里插入图片描述

2.创建rabbitmq发送消息模块(这里我们在mq的消费端进行交换机和队列的创建)

  • 创建模块
  • 导入依赖
<dependencies>
    <!--rabbitmq消息队列-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-bus-amqp</artifactId>
    </dependency>
</dependencies>

3.添加Service方法(发送消息的方法)

@Service  //交由spring容器管理
public class RabbitService {
    @Autowired
    private RabbitTemplate rabbitTemplate;
    /**
     *  发送消息
     * @param exchange 交换机名称 //需要和消费端创建交换机名称一致
     * @param routingKey 路由键名称 //需要和消费端创建路由器名称一致
     * @param message 消息数据 //发送什么类型数据,消费端就用什么类型接受
     */
    public boolean sendMessage(String exchange, String routingKey, Object message) {
        rabbitTemplate.convertAndSend(exchange, routingKey, message);
        return true;
    }
}

4.配置mq的消息转换器

  • 配置的原因:Spring会把你发送的消息序列化为字节发送给MQ,接收消息的时候,还会把字节反序列化为Java对象。
    不过,默认情况下Spring采用的序列化方式是JDK序列化。众所周知,JDK序列化存在下列问题:
    1.数据体积过大
    2.有安全漏洞
    3.可读性差
  • 作用:显然,JDK序列化方式并不合适。我们希望消息体的体积更小、可读性更高,因此可以使用JSON方式来做序列化和反序列化。
@Configuration
public class MQConfig {
    @Bean
    public MessageConverter messageConverter(){
        return new Jackson2JsonMessageConverter();
    }
}

5.需要使用mq发送消息的模块可以依赖此模块,扫描类,在需要使用的地方注入RabbitService调用其方法.需要配置rabbitmq的连接信息.


#rabbitmq地址
spring.rabbitmq.host=192.168.44.165
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

6.rabbitmq的消费端配置

  • 在消费端模块创建监听器
@Component
public class RbListener {

   /**
     * name:依次为交换机名称,队列名称,和路由key名称
     * OrderMqVo:为消息发送端所发送消息的数据类型,spring会自动帮我们赋值
     */
    @RabbitListener(bindings = {@QueueBinding(exchange = @Exchange(name = MqConst.EXCHANGE_DIRECT_ORDER),value =@Queue(name =MqConst.QUEUE_ORDER),key = MqConst.ROUTING_ORDER)})
    public void consume(OrderMqVo orderMqVo, Message message, Channel channel){
        System.out.println("orderMqVo = " + orderMqVo);
    }
}
  • 消费端也需要配置rabbitmq的连接信息
#rabbitmq地址
spring.rabbitmq.host=192.168.44.165
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值