RabbitMQ —— 三、Spring Boot 集成 RabbitMQ
现在的 Java 开发,Spring Boot 算是标配了,这里进行下 Spring Boot 集成 RabbitMQ。
一、添加依赖
apply from: "${rootProject.projectDir}/build.gradle"
dependencies {
compile 'org.springframework.boot:spring-boot-starter-amqp'
}
二、添加 Spring 配置
spring:
rabbitmq:
url: amqp://admin:admin@server.javamatrix:5672
virtualHost: rabbit_vhost
autoAck: true
current: 16
qos: 250
queues:
order.max: com.xugy.apprabbit.module.SyncMessageListener
# score.max: com.xugy.apprabbit.module.SyncMessageListener
这里的属性配置是适用于笔者自己封装的 AmqpProperties 的,读者也可自行封装。
三、发送消息
package com.xugy.apprabbit.module.amqp;
import org.springframework.amqp.core.AmqpAdmin;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* create by xxx@126.com
*/
@Component
public class AmqpSender implements InitializingBean {
public static final String EXCHANGE = "amq.fanout";
public static final String ROUTINGKEY = "check.order.max";
private final AmqpAdmin amqpAdmin;
private final AmqpTemplate amqpTemplate;
private final RabbitTemplate rabbitTemplate;
@Autowired
public AmqpSender(AmqpAdmin amqpAdmin, AmqpTemplate amqpTemplate, RabbitTemplate rabbitTemplate) {
this.amqpAdmin = amqpAdmin;
this.amqpTemplate = amqpTemplate;
this.rabbitTemplate = rabbitTemplate;
}
public void sendMsg(String content) {
for (int i = 0; i < 1890000; i++) {
amqpTemplate.convertAndSend(EXCHANGE, ROUTINGKEY, content);
}
}
@Override
public void afterPropertiesSet() throws Exception {
sendMsg("{\"total_pv\":\"80\",\"id\":\"25895\"}");
System.out.println(">>>>> Send Message Ok.");
}
}
四、进行消费
@Component
public class RabbitMQListener {
@RabbitListener(queues = "order.max")
public void processMessage(String content) {
// ...
}
}