Spring BootSpirng Cloud 集成Rabbit MQ

    技术2022-07-10  151

    注意: spring cloud版本:Greenwich.RELEASE spring boot 版本: 2.1.5.RELEASE 1.导包,在pom.xml中导入

    <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit</artifactId> </dependency>

    2.加入配置文件

    spring: rabbitmq: addresses: ${RABBIT_MQ_HOST:mq地址:5672(端口号)} password: ${RABBIT_MQ_PWD:密码} username: ${RABBIT_MQ_USER:用户名} virtual-host: ${RABBIT_MQ_VHOST:null} listener: simple: retry: enabled: true #是否开启消费者重试(为false时关闭消费者重试,这时消费端代码异常会一直重复收到消息) # multiplier: 1 max-attempts: 5 #最大重试次数 initial-interval: 5s #重试间隔时间 default-requeue-rejected: true #重试次数超过上面的设置之后是否丢弃(false不丢弃时需要写相应代码将该消息加入死信队列)

    3.在Rabbit MQ建立话题模式的exchanges,和queue,进入exchanges的test ,然后通过Routing key: 绑定queue 4.这时已经准备好可以使用mq了,创建测试类往mq发送一条队列,ControllerApplication.class为springboot的启动类

    import com.css.cloud.modules.ControllerApplication; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @SpringBootTest(classes = ControllerApplication.class) public class MqTest { @Autowired private RabbitTemplate rabbitTemplate; @Test public void sendMsg(){ rabbitTemplate.convertAndSend("test","test.Q1","主题模式测试"); } }

    5.创建一个消费者

    package com.css.cloud.modules.xxx; import org.springframework.amqp.rabbit.annotation.RabbitHandler; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component; @Component @RabbitListener(queues = "testqueue") public class CustomerQ1 { @RabbitHandler public void getMsg(String msg){ System.out.println("test:"+msg); } }

    6.测试 看到rabbitmq收到一条信息,java的控制台的消费者也收到一条发送的记录,引入rabbit成功

    Processed: 0.010, SQL: 9