RAG本质是贝叶斯后验概率更新:从原理到工程落地
2026/6/8 5:36:33
喜欢还是喜欢,但可惜就是可惜。
Save User->Send SMS->Send Email->Add PointsSave User->Send Message to MQ->Return Success。命令行
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management命令参数详解:
docker run:启动容器。如果本地没有镜像,Docker 会自动帮我们下载(Pull),实现“免安装”体验。-d:后台运行(Detached),让容器在后台默默工作,不占用当前终端窗口。--name rabbitmq:给容器起个名字叫rabbitmq,方便后续管理。-p 5672:5672:核心端口。Java 代码连接 MQ 用这个端口。-p 15672:15672:管理后台端口。浏览器访问控制台用这个端口。rabbitmq:3-management:重点!一定要选带management后缀的镜像,否则无法使用 Web 管理界面。验证成果:
http://localhost:15672guest/guest这里不使用原生的 amqp-client做介绍了,而是直接使用springboot来是使用rabbitmq,这才是我们真正实用的场景,省略了很多繁琐的步骤。
只需引入一个 starter,Spring 帮你做了 90% 的工作(自动配置连接工厂、连接池等)。
XML
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>只要配个 IP 和 密码就能连,其他复杂的参数 Spring Boot 都给了最佳默认值”。
YAML
spring:rabbitmq:host:localhost port:5672username:guest password:guest这里介绍RabbitTemplate。它是 Spring 提供的“神兵利器”。
@SpringBootTestpublicclassRabbitMqTest{@AutowiredprivateRabbitTemplaterabbitTemplate;@TestpublicvoidtestSimpleSend(){// 这里的 "simple_queue" 是队列名// 也就是默认交换机,直接根据路由键匹配队列StringqueueName="simple_queue";Stringmessage="Hello, RabbitMQ!";rabbitTemplate.convertAndSend(queueName,message);System.out.println("消息已发送:"+message);}}这里介绍@RabbitListener。
推荐写法(最简,自动声明队列):
@ComponentpublicclassSimpleConsumer{// 监听 "simple_queue" 队列@RabbitListener(queuesToDeclare=@Queue(name="simple_queue"))publicvoidreceiveMessage(Stringmessage){System.out.println("消费者收到消息: "+message);}}当你只写@Queue(name = "simple_queue")时,Spring 会创建一个最标准的队列:
本章我们要点回顾:
starter-amqp的开箱即用,通过注解完成了消息的生产与消费。目前的 Demo 代码中,我们使用的是 默认交换机(Default Exchange)。 这本质上是一种“点对点”的通信模式,表现得就像我们直接把消息发到了队列中一样,但这其实掩盖了 RabbitMQ 真正的路由能力。
但在微服务架构中,“广播”(Pub/Sub)和**“路由”**(Routing)才是更常见的需求。比如:如何实现“所有日志都存库,但只有 Error 级别的日志才发报警”?
光靠指定queue名字是做不到的。下一章,我们将深入 RabbitMQ 的心脏,解析Fanout(广播)、Direct(直连)、Topic(主题)三大核心模式,让你的消息系统真正“活”起来!
以上内容,有任何不足欢迎各位指正。如果文章对您有所帮助,请务必点赞,收藏,您的支持就是我的最大动力!