RabbitMQ与SpringBoot集成
环境搭建
- RabbitMQ官网查看ErLang版本与RabbitMQ版本的对应关系
- 在ErLang官网下载与RabbitMQ版本所对应的ErLang安装包
- 在RabbitMQ官网下载安装包
- 先安装ErLang安装包,再安装Rabbit MQ安装包
- 安装成功后使用
rabbitmq-plugins.bat enable rabbitmq_management
开启网页管理界面 - 管理界面地址:http://127.0.0.1:15672/#/
默认账户:guest
默认密码:guest
服务端口:5672
SpringBoot集成
配置文件:
# RabbitMQ
spring.rabbitmq.addresses=127.0.0.1:5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
# 虚拟主机
spring.rabbitmq.virtual-host=/
# 超时时间
spring.rabbitmq.connection-timeout=15000
# 自动ack
spring.rabbitmq.listener.simple.acknowledge-mode=auto
# 消费者监听并发数
spring.rabbitmq.listener.simple.concurrency=5
# 消费者监听最大并发数
spring.rabbitmq.listener.simple.max-concurrency=10
Rabbitmq配置类
/**
* @author: jackTpy
* @description: Rabbitmq配置类
* @date: 2019-11-12 下午 10:22
*/
@Configuration
public class RabbitmqConfig {
/**
* @Discription: 声明【ex_fanout_hcp】交换机【fanout类型】
* @Param: []
* @return: org.springframework.amqp.core.FanoutExchange
* @Author: jackTpy on 2019-11-14 下午 04:37
*/
@Bean
public FanoutExchange EXCHANGE_FANOUT_HCP() {
return new FanoutExchange("ex_fanout_hcp", true, false);
}
/**
* @Discription: 声明【queue_hcp】队列
* @Param: []
* @return: org.springframework.amqp.core.Queue
* @Author: jackTpy on 2019-11-14 下午 04:37
*/
@Bean
public Queue QUEUE_HCP() {
HashMap<String, Object> map = new HashMap<>();
//队列中消息的过期时间,毫秒为单位
map.put("x-message-ttl", 5000);
Queue queue = new Queue("queue_hcp", true, false, false, map);
return queue;
}
/**
* @Discription: 绑定队列到交换机
* @Param: []
* @return: org.springframework.amqp.core.Binding
* @Author: jackTpy on 2019-11-14 下午 04:37
*/
@Bean
public Binding BINDING_QUEUE_HCP() {
return BindingBuilder.bind(QUEUE_HCP()).to(EXCHANGE_FANOUT_HCP());
}
}
Rabbitmq生产者
/**
* @author: jackTpy
* @description: Rabbitmq生产者
* @date: 2019-11-12 下午 10:22
*/
@Service("schduleService")
public class SchduleServiceImpl implements SchduleService {
@Autowired
private HcpDao hcpDao;
@Autowired
private RabbitTemplate rabbitTemplate;
/**
* @Discription: 消息发送
* @Param: [msg]
* @return: void
* @Author: jackTpy on 2019-11-15 下午 03:10
*/
public void hcpUp(PageData pageData) {
//发送消息
rabbitTemplate.convertAndSend("ex_fanout_hcp", null, JSON.toJSONString(hcpPojo));
}
}
Rabbitmq消费者
/**
* @author: jackTpy
* @description: MQ监听
* @date: 2019-11-13 上午 11:16
*/
@Component
public class HcpConusmer {
/**
* @Discription: 队列监听
* @Param: [msg]
* @return: void
* @Author: jackTpy on 2019-11-15 下午 03:10
*/
@RabbitListener(queues = "queue_hcp")
public void onMessage(String msg) {
System.out.println("消费者接收到的消息:" + msg);
}
}