MSMQ 消息队列端口
1801 是微软消息队列 MSMQ(Microsoft Message Queuing)的通信端口,用于不同主机、不同站点之间的队列消息传输。它是 Windows 的原生组件,常见于制造业 MES、医疗 HIS 这类以 Windows 为主要平台的系统架构中:一端把业务请求写入队列,另一端异步取出处理。
基本信息
| 服务 | MSMQ(Microsoft Message Queuing) |
|---|---|
| 协议 | TCP,配套 1801/2103/2105/2107 端口组 |
| 用途 | Windows 应用异步消息、跨主机队列传输 |
| 适用平台 | Windows Server |
| 安全等级 | 仅限内网 |
典型使用场景
- 业务系统之间用队列解耦,削峰填谷
- 跨主机传输消息,替代共享数据库轮询
- 排查队列积压或消息丢失,确认端口连通与队列状态
- 安全评估时确认消息队列没有跨到不可信网段
- 迁移老系统时清点仍在使用的 MSMQ 依赖
查看队列与消息计数
查看队列与消息计数
Get-MsmqQueue | Select QueueName, MessageCount
Get-MsmqQueue -Name 'FormatName:DIRECT=TCP:10.0.0.9\private$\orders'
Test-NetConnection -ComputerName mq01 -Port 1801
netstat -ano | findstr :1801 # 对照监听状态MSMQ 端口组
| 端口 | 用途 | 说明 |
|---|---|---|
| 1801 | 站点间与主机间消息传输 | 本条目,跨主机通信的主通道 |
| 2103 | 多播消息 | 组播投递场景使用 |
| 2105 | 消息队列服务通信 | 队列管理相关调用 |
| 2107 | 消息队列服务通信 | 与 2105 配合,按实际部署核对 |
MSMQ 默认不做传输加密,跨网段使用时消息内容以明文传输,缺少强认证时消息还可被伪造或读取。应启用消息加密与域认证,并把 1801 的来源限制在业务主机网段。
排查提示:队列堆积先看消费进程是否仍在运行,再看端口是否可达。消息超过存储配额后会进入死信或被拒绝写入,应用侧报错常与磁盘与队列限制等本地资源相关,不要一上来就怀疑网络。
迁移与替代:新项目一般选择跨平台消息中间件,MSMQ 的定位偏向遗留系统兼容。改造时可以先在应用层收敛收发接口,再替换底层实现,避免一次改动面铺得太大,出问题时难以定位。