首先我们要知道RabbitMQ中,我们需要发送和接收消息。
而发送者和接收者之间是通过媒介来进行消息的传送和接收。
本文章为RabbitMQ的快速上手简单介绍一下如何在SpringBoot中整合RabbitMQ,我们直接步入正题。
首先我们还是讲一下大致步骤(想不想定义实体类都可以,定义实体类的话,要以json的形式发送)
1.我们需要给application一个配置
如果你是默认用户的话可以直接引用下面四行
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
2.我们要进行消息的发送和接收,所以自然需要配置我们的发送者和接收者
(1)发送者
@Autowired
private RabbitTemplate rabbitTemplate;
rabbitTemplate.convertAndSend()来发送信息
(2)接收者
可以通过监听器来监听对应的queue,然后进行相关操作
@RabbitListener(queues = "zmh")
public void recive(Student student)
{
System.out.println("已接收" + student.getName());
}
3.我们还需要配置一下我们的bean对象(以后引用queue会用到)
4.Handler实现
这里给大家看一下up的发送者,接收者和Config
发送者
接收者(一定要注意一个地方,这里up返回值为空类型,也就是不返回响应,如果rabbit监听器要返回响应要在发送者中设置一下Replyto)
Config(这是一个最基本的Rabbit搭建,仅仅一个queue,大家可以根据自己情况添加exchange,binding等)
源码:
发送者:
package org.example.spring_boot_rabbitmq_test03.Rabbit; import org.example.spring_boot_rabbitmq_test03.Entity.Student; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class Provider { @Autowired private RabbitTemplate rabbitTemplate; public void post(Student student) { rabbitTemplate.convertAndSend("zmh",student); System.out.println("已发送"); } }
接收者
package org.example.spring_boot_rabbitmq_test03.Rabbit; import org.example.spring_boot_rabbitmq_test03.Entity.Student; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component; @Component public class Consumer { @RabbitListener(queues = "zmh") public void recive(Student student) { System.out.println("已接收" + student.getName()); } }
Config
package org.example.spring_boot_rabbitmq_test03.Config; import org.springframework.amqp.core.Queue; import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class Rabbit_Config { @Bean Queue queue() { return new Queue("zmh"); } @Bean Jackson2JsonMessageConverter jackson2JsonMessageConverter() { return new Jackson2JsonMessageConverter(); } }
实体类
package org.example.spring_boot_rabbitmq_test03.Entity; import lombok.Data; import java.io.Serializable; @Data public class Student implements Serializable { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
Handler
package org.example.spring_boot_rabbitmq_test03.Handler; import org.example.spring_boot_rabbitmq_test03.Entity.Student; import org.example.spring_boot_rabbitmq_test03.Rabbit.Provider; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/rabbit_zmh") public class Handler_zmh { @Autowired Provider provider; @RequestMapping("/post") public String post(@RequestBody Student student) { System.out.println("发送中"); provider.post(student); return "发送成功"; } }