<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          mica-mqtt 2.2.12 發(fā)布,簡(jiǎn)化 MqttClientTemplate 構(gòu)造,方便自定義

          共 4478字,需瀏覽 9分鐘

           ·

          2024-04-17 08:45

          一、簡(jiǎn)介

          mica-mqtt 基于 java aio 實(shí)現(xiàn)的簡(jiǎn)單、低延遲高性能 的 mqtt 物聯(lián)網(wǎng)開源組件。mica-mqtt 更加易于集成到已有服務(wù)和二次開發(fā),降低自研物聯(lián)網(wǎng)平臺(tái)開發(fā)成本。

          二、功能

          • 支持 MQTT v3.1、v3.1.1 以及 v5.0 協(xié)議。
          • 支持 websocket mqtt 子協(xié)議(支持 mqtt.js)。
          • 支持 http rest api,http api 文檔詳見。
          • 支持 MQTT client 客戶端。
          • 支持 MQTT server 服務(wù)端。
          • 支持 MQTT 遺囑消息。
          • 支持 MQTT 保留消息。
          • 支持自定義消息(mq)處理轉(zhuǎn)發(fā)實(shí)現(xiàn)集群。
          • MQTT 客戶端 阿里云 mqtt 連接 demo。
          • 支持 GraalVM 編譯成本機(jī)可執(zhí)行程序。
          • 支持 Spring boot 項(xiàng)目快速接入(mica-mqtt-spring-boot-starter)。
          • mica-mqtt-spring-boot-starter 支持對(duì)接 Prometheus + Grafana。
          • 基于 redis pub/sub 實(shí)現(xiàn)集群,詳見 mica-mqtt-broker 模塊。

          三、使用場(chǎng)景

          • 物聯(lián)網(wǎng)(云端 mqtt broker)
          • 物聯(lián)網(wǎng)(邊緣端消息通信)
          • 群組類 IM
          • 消息推送
          • 簡(jiǎn)單、易用的 mqtt client 客戶端

          四、更新記錄

          v2.2.12 - 2024-04-16

          • ? mica-mqtt-client-spring-boot-starter 簡(jiǎn)化 MqttClientTemplate 構(gòu)造,方便自定義。
          • ? mica-mqtt-client-spring-boot-starter 優(yōu)化 spring event mqtt client 連接監(jiān)聽。
          • ? mica-mqtt-client-spring-boot-starter 優(yōu)化注解訂閱。
          • ?? mqtt-client 修復(fù) mqtt5 props 和遺囑同時(shí)配置時(shí)連接編碼問題。

          • ?? mica-mqtt-server 遺囑消息發(fā)送判斷(2.2.7調(diào)整引起)

          五、自定義 MqttClientTemplate

          在某些場(chǎng)景下我們需要啟動(dòng)多個(gè) mqtt client 來處理和轉(zhuǎn)發(fā)多個(gè) mqtt broker 間的數(shù)據(jù)。

          當(dāng)然如果僅僅做數(shù)據(jù)處理和轉(zhuǎn)發(fā),建議還是直接 main 方法直接啟動(dòng) 2 個(gè) mica-mqtt client。這樣更加簡(jiǎn)潔,這樣不依賴 Spring 打包出來的 jar 才 1M 左右,啟動(dòng)飛快。

          /**
           * 2 個(gè) mqtt 服務(wù)間,使用 2 個(gè) client 做數(shù)據(jù)傳輸
           *
           * @author L.cm
           */

          public class MqttClientProxy {

           public static void main(String[] args) {
            MqttClient client1 = MqttClient.create()
             .ip("ip1")
             .port(1883)
             .clientId("clientI")
             .username("mica")
             .password("mica")
             .debug()
             .connectSync();

            MqttClient client2 = MqttClient.create()
             .ip("ip2")
             .port(1883)
             .clientId("client2")
             .username("mica")
             .password("mica")
             .debug()
             .connectSync();

            String[] topics = new String[]{
             "$share/test/link/product1/+/event/+/post",
             "$share/test/link/product2/+/event/+/post",
             "$share/test/link/product3/+/event/+/post"
            };
            client1.subscribe(topics, MqttQoS.AT_MOST_ONCE, (context, topic, message, payload) -> {
             client2.publish(topic, payload);
            });
           }

          }

          自定義 MqttClientTemplate Bean:

          a. 自定義 MqttClientTemplate bean 2.2.11 開始已簡(jiǎn)化,老版本建議先升級(jí)。

          @Configuration
          public class OtherMqttClientConfiguration {

           @Bean("mqttClientTemplate1")
           public MqttClientTemplate mqttClientTemplate1() {
            MqttClientCreator mqttClientCreator1 = MqttClient.create()
             .ip("mqtt.dreamlu.net")
             .username("mica")
             .password("mica");
            return new MqttClientTemplate(mqttClientCreator1);
           }

          }

          b. 修改 starter 自帶的 MqttClientTemplate Bean 引入

          由于現(xiàn)在加入了一個(gè)新的名為 mqttClientTemplate1 MqttClientTemplate,老的 starter 內(nèi)置的 MqttClientTemplate 引入也需要添加 bean name。

          @Autowired
          @Qualifier(MqttClientTemplate.DEFAULT_CLIENT_TEMPLATE_BEAN)
          private MqttClientTemplate mqttClientTemplate;

          c. 新加入的 mqttClientTemplate1 MqttClientTemplate bean 引入

          @Autowired
          @Qualifier("mqttClientTemplate1")
          private MqttClientTemplate mqttClientTemplate;

          d. 新加入的 mqttClientTemplate1 注解訂閱

          注意:由于 @MqttClientSubscribe clientTemplateBean 默認(rèn)是 MqttClientTemplate.DEFAULT_CLIENT_TEMPLATE_BEAN,所以新增的 mqttClientTemplate1 注解訂閱的時(shí)候也需要配置。

          @MqttClientSubscribe(
              value = "/#"
              clientTemplateBean = "mqttClientTemplate1"
          )
          public void sub1(String topic, byte[] payload) {
              logger.info("topic:{} payload:{}", topic, ByteBufferUtil.toString(payload));
          }


          瀏覽 38
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本在线视频免费观看区 | 夜夜天天干 | 99久久99视频 | 欧美性爱内射在线 | www.豆花福利视频 |