0


SpringBoot 整合 RabbitMQ demo

Rabbit Windows安装教程
本文只做Demo案例的分享,具体只是需自行百度

一、生产者

1.application.properties
配置Rabbit的基本信息

#rabbit 主机IPspring.rabbitmq.host=127.0.0.1
#rabbit 端口spring.rabbitmq.port=5672#rabbit 账号 可自行创建 这里是默认的spring.rabbitmq.username=guest
#rabbit 密码 可自行创建 这里是默认的spring.rabbitmq.password=guest
#rabbit 虚拟机地址 可自行指定 这里是默认的
spring.rabbitmq.virtual-host=/
#主程序的端口 和 rabbit无关server.port=8081

2.pom文件
导入两个maven依赖
第一个是SpringBoot集成的rabbit
第二个是web依赖,用来方便发消息

<!--RabbitMq--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency><!--Web 方便用来发消息--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

3.Rabbit配置类
这里用的是主题模式,也就是模糊匹配的模式
这里设置的是只要是rabbit.开头就会进入这个队列
更详细的方法意义 请自行百度

@ConfigurationpublicclassRabbitConfig{publicstaticfinalStringEXCHANGE_NAME="rabbit_exchange";publicstaticfinalStringQUEUE_NAME="rabbit_queue";/**
     * 创建交换机
     * ExchangeBuilder有四种交换机模式
     * Direct Exchange:直连交换机,根据Routing Key(路由键)进行投递到不同队列。
     * Fanout Exchange:扇形交换机,采用广播模式,根据绑定的交换机,路由到与之对应的所有队列。
     * Topic Exchange:主题交换机,对路由键进行模式匹配后进行投递,符号#表示一个或多个词,*表示一个词。
     * Header Exchange:头交换机,不处理路由键。而是根据发送的消息内容中的headers属性进行匹配。
     * durable 交换器是否持久化(false 不持久化,true 持久化)
     **/@BeanpublicExchangerabbitExchange(){returnExchangeBuilder.topicExchange(EXCHANGE_NAME).durable(true).build();}/**
     * 创建队列
     * durable 队列是否持久化 队列调用此方法就是持久化 可查看方法的源码
     * deliveryMode 消息是否持久化(1 不持久化,2 持久化)
     **/@BeanpublicQueuerabbitQueue(){returnQueueBuilder.durable(QUEUE_NAME).build();}/**
    * 绑定交换机和队列
    * bing 方法参数可以是队列和交换机
    * to 方法参数必须是交换机
    * with 方法参数是路由Key 这里是以rabbit.开头
    * noargs 就是不要参数的意思
    * 这个方法的意思是把rabbit开头的消息 和 上面的队列 和 上面的交换机绑定
    **/@BeanpublicBindingrabbitBinding(@Qualifier("rabbitExchange")Exchange exchange,@Qualifier("rabbitQueue")Queue queue){returnBindingBuilder.bind(queue).to(exchange).with("rabbit.#").noargs();}}

4.Controller
这里整一个网页调用的形式进行发送信息

@RestControllerpublicclassProducerWebController{@AutowiredProducerService producerService;@RequestMapping("/sendMq")publicStringsendMq(@RequestParam("mq")String mq){return producerService.sendMq(mq);}}

5.Service
在service层注入RabbitTemplate
convertAndSend 即是消息发送的方法

publicinterfaceProducerService{publicStringsendMq(String mq);}
@ServicepublicclassProducerServiceImplimplementsProducerService{@AutowiredRabbitTemplate rabbitTemplate;/**
    * convertAndSend 参数
    * 第一个是交换机的名字
    * 第二个是队列的具体名字 因为是rabbit开头 因为RabbitConfig设置rabbit开头通配 所以会被监听到
    * 第三个是具体的消息
    **/@OverridepublicStringsendMq(String mq){
        rabbitTemplate.convertAndSend(RabbitConfig.EXCHANGE_NAME,"rabbit.demo", mq);return"发送成功,消息是:"+ mq;}}

6.发送消息
启动生产者程序
浏览器输入 127.0.0.1/sendMq?mq=测试
在这里插入图片描述
在这里插入图片描述

二、消费者

1.application.properties

spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.virtual-host=/
server.port=8082

2.Rabbit监听
只需要在消费者中创建一个监听即可监听到队列的消息
可以直接打印出Message消息

@ComponentpublicclassConsumerListener{/**
    * 设置监听哪一个队列 这个队列是RabbitConfig里面设置好的队列名字
    **/@RabbitListener(queues ="rabbit_queue")publicvoidlistenQueue(Message message){System.out.println(newString(message.getBody()));}}

在这里插入图片描述


本文转载自: https://blog.csdn.net/weixin_45580378/article/details/131756797
版权归原作者 小小爪哇攻城狮 所有, 如有侵权,请联系我们删除。

“SpringBoot 整合 RabbitMQ demo”的评论:

还没有评论