更新记录

1.0.2(2026-10-17)

1.调整多主题。

  1. 优化逻辑

1.0.0(2026-10-17)

1.支持AQMP协议直接连接通讯


平台兼容性

uni-app(4.75)

Vue2 Vue2插件版本 Vue3 Vue3插件版本 Chrome Safari app-vue app-vue插件版本 app-nvue Android Android插件版本 iOS 鸿蒙
√ 1.0.0 √ 1.0.0 - - √ 1.0.0 - 11.0 1.0.0 - -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - - -

zyj-RabbitMQtt

uni-app / uni-app x 的 RabbitMQ(AMQP)客户端插件,封装 amqp-client,支持多队列订阅、事件方式接收消息、自动重连。

仅支持 Android(iOS 为空实现)。

能力

能力 说明
连接 AMQP 支持 host / port / vhost / 用户名密码,默认端口 5672
多队列订阅 一次订阅多个队列,消息回调会带上来源队列名
事件接收 消息到达由原生线程直接推送到 JS,无需轮询
断开监听 连接断开、消费被取消都会回调,附带原因
自动重连 断线每 5 秒重试,成功后自动恢复队列绑定与消费者
发送消息 走默认交换机,routingKey 填队列名
主动拉取 备用拉模式,未注册事件时消息会缓存

安装与生效

插件内含第三方库(utssdk/app-android/libs/zyj-amqp.aar),必须制作自定义基座才能生效:

运行 → 运行到手机或模拟器 → 制作自定义基座
运行 → 运行到手机或模拟器 → 运行到 Android App 基座

每次修改插件原生代码或 aar 后,都要重新制作基座。

使用示例

import {
    connect, startListen, onGetMsg, onDisconnect, onReconnect,
    sendMsg, isConnected, close
} from "@/uni_modules/zyj-RabbitMQtt"

const QUEUES = ["QUEUE", "QUEUE111"]

// 1. 连接(host, port, user, pwd, vhost)
let ok = connect("10.168.2.188", 5672, "sz_prod", "sm*259MQZORw", "/")
if (!ok) {
    console.log("连接失败,看控制台日志")
    return
}

// 2. 注册事件(只需注册一次)
//    消息到达:queue = 来源队列名,msg = 消息内容
onGetMsg((queue, msg) => {
    console.log("收到消息", queue, msg)
})

//    连接断开:reason 为断开原因,插件会自动重连
onDisconnect((reason) => {
    console.log("连接断开,自动重连中", reason)
})

//    重连成功:消费者已自动恢复,无需重新订阅
onReconnect(() => {
    console.log("已重新连接")
})

// 3. 订阅队列
startListen(QUEUES)

// 发消息(队列必须已存在)
sendMsg("QUEUE", "hello from pda")

// 查询连接状态
if (isConnected()) {
    console.log("已连接")
}

// 页面卸载时断开,释放资源
close()

调用顺序

connect → onGetMsg / onDisconnect / onReconnect → startListen → close

事件要在 startListen 之前注册,避免漏掉最早到达的消息。

API

方法 参数 返回 说明
connect host, port, user, pwd, vhost boolean 连接服务器
isConnected 无 boolean 是否已连接
startListen queues: string[] boolean 订阅队列,注册原生消费者
onGetMsg cb(queue, msg) void 消息到达事件
onDisconnect cb(reason) void 连接断开事件
onReconnect cb() void 自动重连成功事件
sendMsg queue, msg boolean 发消息到指定队列
getMsg queue string 主动拉一条(备用)
getMsgMulti queues: string[] "队列名\|消息" 多队列拉一条(备用)
close 无 void 断开并释放资源

完整参数说明见 utssdk/interface.uts。

注意事项

  1. 事件只注册一次。重复调用会让 callback 常驻内存。
  2. 自动 ack。消息取出即从服务器删除;若队列还有其他消费者,会互相抢占消息。
  3. 端口别填错。AMQP 是 5672,15672 是管理后台端口。
  4. sendMsg 要求队列已存在,队列不存在时消息会被丢弃且不报错。
  5. 主动 close() 不触发 onDisconnect,需自行更新 UI 状态。
  6. 仅 Android 5.0(API 21)及以上可用。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

无

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无