Springboot整合RabbitMQ
文章目录
一、说明
1、官网地址:https://www.rabbitmq.com/
2、该文档记录的是使用直流交换机
3、生产者和消费者在同一项目中
二、RabbitMQ的安装
三、RabbitMQ的使用
1、安装依赖,配置pom.xml
<!-- rabbitmq-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
2、配置application.yml
spring:
rabbitmq:
host: 127.0.0.1
port: 5672
username: guest
password: guest
virtual-host: /
listener:
simple:
acknowledge-mode: manual
3、配置生产着端交换机
package com.hxlinks.system.socket.rabbitmq.config;
import com.hxlinks.common.constant.RabbitMqConstants;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* 交换机配置
*
* @author 黄三金
* @version 1.0
* @since 2022/12/3 17:41
*/
@Configuration
public class RabbitMqConfig {
/**
* 配置RabbitMQ的交换机
*/
@Bean
public DirectExchange getExchangeToSchema() {
return new DirectExchange(RabbitMqConstants.DIRECT_EXCHANGE_NETWORK, true, false);
}
}
4、配置消费者端监听器
package com.hxlinks.system.socket.rabbitmq.listener;
import com.hxlinks.common.constant.RabbitMqConstants;
import com.hxlinks.system.service.EquBaseSchemaService;
import com.rabbitmq.client.Channel;
import lombok.RequiredArgsConstructor;
import org.springframework.amqp.rabbit.annotation.*;
import org.springframework.stereotype.Component;
import org.springframework.amqp.core.Message;
import java.io.IOException;
/**
* 摘要监听器
*
* @author 黄三金
* @version 1.0
* @since 2022/12/3 17:49
*/
@Component
@RequiredArgsConstructor
@RabbitListener(bindings = {
@QueueBinding(
exchange = @Exchange(name = RabbitMqConstants.DIRECT_EXCHANGE_NETWORK, type = "direct"),
value = @Queue(name = RabbitMqConstants.QUEEN_SCHEMA, durable = "true"),
key = {RabbitMqConstants.ROUTING_KEY_SCHEMA}
)
})
public class SchemaRabbitMQMsgListener {
/**
* 服务对象
*/
private final EquBaseSchemaService equBaseSchemaService;// 设备概要基础业务层
/**
* 监听方法
*/
@RabbitHandler
public void msgHandler(String payload, Channel channel, Message message) {
// 处理数据值Redis
equBaseSchemaService.insertRedisByMqtt(payload);
// 消息的确认
try {
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
} catch (IOException e) {
e.printStackTrace();
}
}
}