一 添加pom
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
二,配置yml
spring:
rabbitmq:
host: 192.168.56.200
port: 5672
username: admin
password: admin
virtual-host: /
mq:
exchange-name: exchange
queue-name: queue
routing-key: key1
三 配置绑定关系
import lombok.Data;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
/**
* @author yangXinming
* @date 2024-03-08
* @description 消息队列配置
*/
@Data
@Configuration
@Component
public class RabbitMQConfig {
/**
* 消息队列名称
**/
@Value("${mq.queue-name}")
private String queenName;
/**
* 交换机名称
**/
@Value("${mq.exchange-name}")
private String exchangeName;
/**
* 路由key
**/
@Value("${mq.routing-key}")
private String routingKey;
/**
* @MethodName: queue
* @description: 消息队列
* @UpdateTime: 2024/3/7
* @Return: org.springframework.amqp.core.Queue
**/
@Bean
public Queue queue() {
return new Queue(queenName);
}
/***
* @MethodName: exchange
* @description: 交换机
* @UpdateTime: 2024/3/7
* @Return: org.springframework.amqp.core.DirectExchange
**/
@Bean
public DirectExchange exchange() {
return new DirectExchange(exchangeName);
}
/**
* @MethodName: binding
* @description: 将消息队列 绑定到交换机
* @UpdateTime: 2024/3/7
**/
@Bean
public Binding binding() {
return BindingBuilder
.bind(queue())
.to(exchange())
.with(routingKey);
}
}
四 生产者
@Service
public class RabbitService implements IRabbitService {
@Autowired
private RabbitTemplate rabbitTemplate;
@Autowired
RabbitMQConfig rabbitMQConfig;
@Override
public void convertAndSend(Object object) {
rabbitTemplate.convertAndSend(rabbitMQConfig.getExchangeName(), rabbitMQConfig.getRoutingKey(), object);
}
}
五 消费者
@Component
@Slf4j
public class RabbitMQConsumer {
@RabbitListener(queues = "${mq.queue-name}")
public void receiveMessage(String message) {
try {
log.info("mq message:[{}]",message);
} catch (Exception e) {
log.error("操作异常【{}】", message);
}
}
}