.net core使用RabbitMQ
RabbitMQ 是一个可靠且成熟的消息传递和流代理,它很容易部署在云环境、内部部署和本地机器上。它目前被全世界数百万人使用。
1.基本概念
-
生产者(Producer)
生产者是一个发送消息的程序。发送消息的程序可以是任何语言编写的,只要它能够连接到RabbitMQ服务器,并且能够发送消息到RabbitMQ服务器。
-
消费者(Consumer)
消费者是一个接收消息的程序。接收消息的程序可以是任何语言编写的,只要它能够连接到RabbitMQ服务器,并且能够从RabbitMQ服务器接收消息。
-
队列(Queue)
队列是RabbitMQ的内部对象,用于存储消息。多个生产者可以向一个队列发送消息,多个消费者可以尝试从一个队列接收消息。队列支持多种消息分发策略。
-
交换机(Exchange)
交换机是消息的分发中心。它接收来自生产者的消息,然后将这些消息分发给队列。交换机有多种类型,包括直连交换机、主题交换机、扇形交换机、头交换机。
-
绑定(Binding)
绑定是交换机和队列之间的关联关系。绑定可以使用路由键进行绑定,也可以使用通配符进行绑定。
-
路由键(Routing Key)
路由键是生产者发送消息时附带的一个属性。路由键的作用是决定消息被分发到哪个队列。
-
通配符(Wildcard)
通配符是一种模式匹配的方式。RabbitMQ支持两种通配符:`*`和`#`。
-
绑定键(Binding Key)
绑定键是交换机和队列之间的关联关系。绑定键可以使用路由键进行绑定,也可以使用通配符进行绑定。
-
持久化(Durable)
持久化是指RabbitMQ服务器重启后,消息是否还存在。持久化可以应用到交换机、队列、绑定、消息等。
-
确认机制(Acknowledge)
确认机制是指消费者接收到消息后,向RabbitMQ服务器发送一个确认消息。RabbitMQ服务器收到确认消息后,会删除这条消息。
- 自动确认
消费者接收到消息后,RabbitMQ服务器会自动删除这条消息。
- 手动确认
消费者接收到消息后,需要向RabbitMQ服务器发送一个确认消息。RabbitMQ服务器收到确认消息后,会删除这条消息。
- 自动确认
-
拒绝机制(Reject)
拒绝机制是指消费者接收到消息后,向RabbitMQ服务器发送一个拒绝消息。RabbitMQ服务器收到拒绝消息后,会将这条消息重新发送给其他消费者。
-
死信队列(Dead Letter Queue)
死信队列是指消息被拒绝、过期或者达到最大重试次数后,会被发送到死信队列。
-
消息过期(Message TTL)
消息过期是指消息在指定时间内没有被消费者消费,会被删除。
-
消息优先级(Message Priority)
消息优先级是指消息在队列中的优先级。消息优先级高的消息会被优先消费。
-
消息分发
消息分发是指消息在队列中的分发策略。消息分发策略包括轮询分发、公平分发、负载均衡分发。
2.环境搭建
-
Docker 安装 RabbitMQ
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 --restart=always --hostname my-rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -e TZ=Asia/Shanghai rabbitmq:management
-d
:后台运行--restart
:重启策略--name
:容器名称-p
:端口映射--hostname
:主机名-e
:环境变量RABBITMQ_DEFAULT_USER
:默认用户名RABBITMQ_DEFAULT_PASS
:默认密码TZ
:时区
rabbitmq:management
:镜像名称
-
Docker Compose 安装 RabbitMQ
version: "3.1" services: rabbitmq: restart: always image: rabbitmq:management container_name: rabbitmq hostname: my-rabbit ports: - 5672:5672 - 15672:15672 # RabbitMQ管理界面端口 environment: TZ: Asia/Shanghai RABBITMQ_DEFAULT_USER: admin RABBITMQ_DEFAULT_PASS: admin
restart
:重启策略image
:镜像名称container_name
:容器名称hostname
:主机名ports
:端口映射environment
:环境变量TZ
:时区RABBITMQ_DEFAULT_USER
:默认用户名RABBITMQ_DEFAULT_PASS
:默认密码
rabbitmq:management
:镜像名称
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂