Springbbot集成RabbitMQ
1:依赖
<!--springboot整合rabbitMQ-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
2:配置信息
#rabbitMQ服务访问配置
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=root
spring.rabbitmq.password=password
QUEUE_NAME=test
3:注入队列
@Configuration
public class RabbitConfig {
/**
* 队列名称
*/
@Value( "${QUEUE_NAME}" )
private String QUEUE_NAME;
/**
* 队列
* @return
*/
@Bean
public Queue Queue() {
return new Queue(QUEUE_NAME);
}
4:创建消息生产者
/**
* 队列名称
* 这里的队列名称要和config注入的队列名称一样
*/
@Value( "${QUEUE_NAME}" )
private String QUEUE_NAME;
/**
* 生产消息
* @throws Exception
*/
public void send() throws Exception{
String context = "开始生产消息 " + new Date();
this.rabbitTemplate.convertAndSend(context);
}
5:创建消费者
@RabbitListener 和 @RabbitHandler结合使用,不同类型的消息使用不同的方法来处理。
*/
@Component
@RabbitListener(queues = "test")//注明需要消费的队列名称,用于监听这个队列
public class ReceiverTest {
/**
* 消息消费
* @param hello
*
*
* @RabbitListener 和 @RabbitHandler可以结合使用,
* 不同类型的消息使用不同的方法来处理。
*/
@RabbitHandler//用于处理消息
public void process(String hello) {
System.out.println("消费消息 : " + hello);
}
}
@RabbitListener 和 @RabbitHandler可以分别用在方法上面 效果是一样
6:最后在启动类上加上扫描注解
@EnableRabbit
7:测试
@RestController
@RequestMapping(value = "rabbit")
public class TestDemo {
@Autowired
private SentTest sentTest;
@GetMapping(value = "/test")
@ResponseBody
public String find() throws Exception{
for(int i = 0;i<=10;++i) {
sentTest.send(i);
}
return "ok";
}