导入依赖:
<! - rabbitmq - >
<dependency>
<groupId> org.springframework.boot </ groupId>
<artifactId> spring-boot-starter-amqp </ artifactId>
</ dependency>
添加配置:
spring:
rabbitmq:
addresses: 47.98.238.150:5672
username: admin
password: admin
publisher-confirms: true
virtual-host: /
消息发送者:
package com.java4all.component;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class Sender {
@Autowired
private RabbitTemplate rabbitTemplate;
public void send(List<String> msg){
this.rabbitTemplate.convertAndSend("send1",msg);
}
}
消息监听(处理业务):
package com.java4all.config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.handler.annotation.Payload;
import java.util.List;
@Configuration
@RabbitListener(queues = "send1")
public class Listener {
private static final Logger LOGGER = LoggerFactory.getLogger(Listener.class);
@Bean
public Queue send1Queue(){
return new Queue("send1");
}
@RabbitHandler
public void process(@Payload List<String> message) {
// 处理业务逻辑,降低耦合
for (String s : message) {
LOGGER.info("*******************Listener:" + s +"****************************");
try {
Thread.sleep(5*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
业务调用:
package com.java4all.controller;
import com.java4all.component.Sender;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
import java.util.List;
@RestController
@RequestMapping(value = "mq")
public class RabbitmqController {
@Autowired
private Sender sender;
@RequestMapping(value = "sendMsg",method = RequestMethod.GET)
public String sendMsg(){
List<String> list = Arrays.asList("重楼","天知道","哈哈","呵呵","啦啦啦");
sender.send(list);
return "Send.............";
}
}
项目地址:
https://github.com/ShiLinDang/springBoot-rabbitmq.git