You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android HiveMQ客户端如何订阅多个MQTT主题?

Android HiveMQ客户端批量订阅MQTT主题方法

要实现多主题订阅,无需重复调用单主题订阅接口,HiveMQ Android客户端支持直接传入一组主题过滤器完成批量订阅,以下是两种常用实现方式:

方式1:统一QoS批量订阅

如果所有订阅主题使用相同的QoS级别,可直接创建多个TopicFilter对象并传入集合:

// 定义需要订阅的主题,支持MQTT通配符(+匹配单层,#匹配多层)
TopicFilter topicTest = TopicFilter.of("topic/test");
TopicFilter topicSensor = TopicFilter.of("topic/sensor/+");
TopicFilter topicDevice = TopicFilter.of("device/#");

// 执行批量订阅,统一设置QoS为AT_LEAST_ONCE
client.subscribeWith()
    .topicFilters(List.of(topicTest, topicSensor, topicDevice))
    .qos(MqttQos.AT_LEAST_ONCE)
    .callback(publish -> {
        // 处理收到的消息
        String topic = publish.getTopic().toString();
        String payload = new String(publish.getPayloadAsBytes(), StandardCharsets.UTF_8);
        Log.d("MQTT", "Received: " + payload + " from " + topic);
    })
    .send()
    .whenComplete((subAck, throwable) -> {
        if (throwable != null) {
            Log.e("MQTT", "Batch subscribe failed", throwable);
        } else {
            Log.d("MQTT", "All topics subscribed successfully");
        }
    });

方式2:分主题设置不同QoS

如果不同主题需要不同的QoS,可使用SubscribeEntry为每个主题单独配置:

// 为每个主题指定对应的QoS
SubscribeEntry entryTest = SubscribeEntry.of(TopicFilter.of("topic/test"), MqttQos.EXACTLY_ONCE);
SubscribeEntry entrySensor = SubscribeEntry.of(TopicFilter.of("topic/sensor/+"), MqttQos.AT_LEAST_ONCE);
SubscribeEntry entryDevice = SubscribeEntry.of(TopicFilter.of("device/#"), MqttQos.AT_MOST_ONCE);

// 批量订阅不同QoS的主题
client.subscribeWith()
    .entries(List.of(entryTest, entrySensor, entryDevice))
    .callback(publish -> {
        // 消息处理逻辑
        String topic = publish.getTopic().toString();
        byte[] payloadBytes = publish.getPayloadAsBytes();
        // 按需处理消息
    })
    .send()
    .whenComplete((subAck, throwable) -> {
        if (throwable != null) {
            Log.e("MQTT", "Subscribe failed", throwable);
        }
    });

注意事项

  • 必须确保客户端处于已连接状态再执行订阅操作,建议在client.connect()的回调中处理订阅逻辑。
  • 主题支持MQTT标准通配符,合理使用可减少订阅数量。

内容的提问来源于stack exchange,提问作者joghm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 21:30:02