91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

Java EMqtt怎樣實現消息過濾

小樊
82
2024-09-29 12:22:04
欄目: 編程語言

在Java中,使用EMqtt庫可以實現MQTT消息的訂閱和過濾。以下是一個簡單的示例,展示了如何使用EMqtt客戶端訂閱主題并根據主題過濾消息。

  1. 首先,確保已將EMqtt庫添加到項目中。如果使用Maven,可以在pom.xml文件中添加以下依賴:
<dependency>
    <groupId>org.eclipse.paho</groupId>
    <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
    <version>1.2.5</version>
</dependency>
  1. 創建一個EMqtt客戶端實例,并連接到MQTT代理:
import org.eclipse.paho.client.mqttv3.*;

public class EMqttClient {
    public static void main(String[] args) {
        String brokerUrl = "tcp://broker.emqx.io:1883";
        String clientId = "JavaEMqttClient";

        MqttClient client = new MqttClient(brokerUrl, clientId);
        MqttConnectOptions connOpts = new MqttConnectOptions();
        connOpts.setCleanSession(true);
        connOpts.setAutomaticReconnect(true);

        try {
            client.connect(connOpts);
        } catch (MqttException e) {
            System.out.println("Failed to connect to MQTT broker.");
            e.printStackTrace();
            return;
        }
    }
}
  1. 訂閱主題并根據主題過濾消息。在這個例子中,我們將訂閱主題test/topic,并且只處理包含單詞"hello"的消息:
import org.eclipse.paho.client.mqttv3.*;

public class EMqttClient {
    // ... (省略連接到MQTT代理的代碼)

    public static void main(String[] args) {
        // ... (省略連接到MQTT代理的代碼)

        try {
            // 訂閱主題
            String topic = "test/topic";
            client.subscribe(topic);

            // 處理接收到的消息
            client.setCallback(new MqttCallback() {
                @Override
                public void messageArrived(String topic, MqttMessage message) throws Exception {
                    String payload = new String(message.getPayload());
                    if (payload.contains("hello")) {
                        System.out.println("Received message: " + payload);
                    }
                }

                @Override
                public void connectionLost(Throwable cause) throws Exception {
                    System.out.println("Connection lost.");
                    cause.printStackTrace();
                }

                @Override
                public void deliveryComplete(IMqttDeliveryToken token) {
                    System.out.println("Delivery complete.");
                }
            });

            // 保持客戶端運行,以便持續接收消息
            Thread.sleep(10000);
        } catch (MqttException | InterruptedException e) {
            System.out.println("Error occurred.");
            e.printStackTrace();
        } finally {
            try {
                client.disconnect();
            } catch (MqttException e) {
                e.printStackTrace();
            }
        }
    }
}

在這個示例中,我們訂閱了test/topic主題,并在messageArrived回調方法中檢查消息負載是否包含單詞"hello"。如果包含,則打印消息。這樣,我們就實現了消息過濾功能。

0
松溪县| 陕西省| 平湖市| 清苑县| 嫩江县| 淄博市| 辉县市| 宁化县| 农安县| 育儿| 石棉县| 洛宁县| 嵊州市| 沧州市| 平罗县| 鱼台县| 台安县| 太白县| 滁州市| 渝中区| 和平区| 滨州市| 礼泉县| 尖扎县| 赞皇县| 苏州市| 巴彦县| 宁化县| 靖宇县| 漳州市| 赤城县| 时尚| 泸水县| 沙湾县| 临沧市| 申扎县| 合山市| 苍南县| 伊通| 都匀市| 涟水县|