一、简介:
二、案例:
1、引入依赖
<!-- rabbitmq依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> <!--fastJson--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.49</version> </dependency> <!--lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency>
2、编写RabbitMQ配置属性:
# rabbitMQ配置 spring.rabbitmq.host=127.0.0.1 spring.rabbitmq.port=5672 spring.rabbitmq.username=guest spring.rabbitmq.password=guest spring.rabbitmq.virtual-host=/ spring.rabbitmq.listener.simple.concurrency= 10 spring.rabbitmq.listener.simple.max-concurrency= 10 spring.rabbitmq.listener.simple.prefetch= 1 spring.rabbitmq.listener.simple.auto-startup=true spring.rabbitmq.listener.simple.default-requeue-rejected= true spring.rabbitmq.template.retry.enabled=true spring.rabbitmq.template.retry.max-attempts=3 spring.rabbitmq.template.retry.multiplier=1.0
3、编写RabbitMQ配置类:
import org.springframework.amqp.core.Queue; import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; import org.springframework.amqp.support.converter.MessageConverter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class MQConfig { // 队列名称 public static final String QUEUE = "queue"; /* 在springboot启动的时候创建一个队列 */ @Bean public Queue queue() { return new Queue(QUEUE, true); } /* 消息转换器:将消息转换为JSON格式 */ @Bean public MessageConverter getMessageConverter() { return new Jackson2JsonMessageConverter(); } }
4、编写消息类:该消息类是生产者发送给消息队列的参数
@Data public class CustomMessage { private int id; private String name; }
5、编写控制层:
@Autowrite public MQSender mQSender; @RequestMapping("/test") public String test(){ CustomMessage customMessage = new CustomMessage(); customMessage.setId(1); customMessage.setName("miss"); mQSender.send(customMessage); return "ok"; }
6、编写生产者:生产者将java对象转换为json字符串
import com.alibaba.fastjson.JSON; import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @Slf4j public class MQSender { @Autowired private RabbitTemplate rabbitTemplate; public void send(CustomMessage customMessage){ String json = JSON.toJSONString(customMessage); log.info("send:"+json); rabbitTemplate.convertAndSend(MQConfig.QUEUE,json); } }
7、编写消费者:消费者监听“QUEUE”队列是否有新数据,如果有则获取,并将json字符串转换为java对象
import com.alibaba.fastjson.JSON; import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @Service @Slf4j public class MQReceiver { @RabbitListener(queues=MQConfig.QUEUE) //监听 public void receive(String json){ CustomMessage customMessage = JSON.toJavaObject(JSON.parseObject(json), CustomMessage.class); system.out.println(customMessage); } }