本文共 1652 字,大约阅读时间需要 5 分钟。
RabbitMQ 是一个开源的消息队列系统,广泛应用于分布式系统中的消息中继与解耦。其核心功能包括点对点排队和发布/订阅模式,支持异步处理、大规模流量处理以及系统间解耦等场景。
消息代理是 RabbitMQ 的核心功能,负责接收、存储和分发消息。其主要场景包括:
docker run --name rabbitmq \-p 5671:5671 -p 5672:5672 \-p 4369:4369 -p 25672:25672 \-p 15671:15671 -p 15672:15672 \rabbitmq:management
安装完成后,访问 虚拟机IP:15672 进入管理界面。
依赖添加:
org.springframework.boot spring-boot-starter-amqp
配置管理:在 application.yml 中添加:
spring: rabbitmq: host: 192.168.56.10 port: 5672 virtual-host: #
启用插件:在主类加注解 @EnableRabbit。
RabbitMQ 提供四种交换机类型,常用 DirectExchange 和 TopicExchange。
直接交换机,消息直接投送至队列,无路由键转换。
主题交换机,基于主题模式路由消息,支持多级匹配。
扇出交换机,消息同时投送至所有绑定的队列。
创建交换机:
amqpAdmin.declareExchange(new DirectExchange("hello-java-exchange", true, false));创建队列:
amqpAdmin.declareQueue(new Queue("hello-java-queue", true, false, false));绑定交换机与队列:
amqpAdmin.declareBinding(new Binding("hello-java-queue", Binding.DestinationType.QUEUE, "hello-java-exchange", "hello-java-queue", null));配置发送端:
rabbitTemplate.setConfirmCallback(new ConfirmCallback() { @Override public void confirm(CorrelationData correlationData, boolean ack, String cause) { // 确认消息成功接收 }});发送消息时启用确认机制:
spring.rabbitmq.publisher-confirm-type=correlated
配置消费端:
spring.rabbitmq.listener.simple.acknowledge-mode=manual
消费消息时手动确认:
channel.basicAck(deliveryTag, false);
通过以上配置和实践,RabbitMQ 可以有效支持系统的消息中继与解耦,提升消息处理能力和系统稳定性。
转载地址:http://dkhq.baihongyu.com/