日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

SpringBoot+MQTT+apollo實現訂閱發布功能的示例

瀏覽:42日期:2023-05-11 09:40:20

由于最近公司在開發一款后臺與安卓的更新系統,經過再三研究之后,也是選擇Mqtt這個目前流行的框架。為了能夠讓項目運營起來,最終雖說是選擇ActiveMQ。但在這個過程中,也是發現Apollo作為服務器也是相當不錯。當然對于后者已經被apace放棄,不過今天還是和大家整理一下SpringBoot+MQTT+apollo實現訂閱發布功能的全過程。

對于項目首先需要用到的前提東西,比如Apollo如何下載,以及MQTT測試工具在這里就不多說。如果真的不懂私聊Damon吧,在這里就不浪費時間。

對于項目,首先你所需要引入maven包:

pom.xml

<!-- MQTT --> <dependency> <groupId>org.springframework.integration</groupId> <artifactId>spring-integration-stream</artifactId> </dependency> <dependency> <groupId>org.springframework.integration</groupId> <artifactId>spring-integration-mqtt</artifactId> </dependency>

其目標就是將MQTT用在項目組中接著就是項目yml文件的配置,使用properties,以葫蘆畫瓢就行了:

applicaiton.yml

mqtt: username: admin password: password host-url: tcp://127.0.0.1:8161 # 你自己服務器的地址和端口,這個需要改 clientID: test1 # 這個改不改隨意,但不同的客戶端肯定不能一樣 default-topic: home/garden/fountain # 默認主題 timeout: 100 keepalive: 100# Tomcatserver: tomcat: uri-encoding: UTF-8 max-threads: 1000 min-spare-threads: 30 port: 8088

注意host-url,這就是你apollo的地址

來到第三步,此時就是項目內的文件:

MqttConfig文件

@Component@ConfigurationProperties('mqtt')@Setter@Getterpublic class MqttConfig { @Autowired private MqttPushClient mqttPushClient; /** * 用戶名 */ // @Value('username') private String username; /** * 密碼 */ private String password; /** * 連接地址 */ private String hostUrl; /** * 客戶Id */ private String clientID; /** * 默認連接話題 */ private String defaultTopic; /** * 超時時間 */ private int timeout; /** * 保持連接數 */ private int keepalive; @Bean public MqttPushClient getMqttPushClient() { System.out.println('hostUrl: '+ hostUrl); System.out.println('clientID: '+ clientID); System.out.println('username: '+ username); System.out.println('password: '+ password); System.out.println('timeout: '+timeout); System.out.println('keepalive: '+ keepalive); mqttPushClient.connect(hostUrl, clientID, username, password, timeout, keepalive); // 以/#結尾表示訂閱所有以test開頭的主題 mqttPushClient.subscribe(defaultTopic, 0); return mqttPushClient; }}

目的就是配置所對應的消息

第四步就是發布以及訂閱等功能:

MqttPushClient

@Componentpublic class MqttPushClient { private static final Logger logger = LoggerFactory.getLogger(MqttPushClient.class); @Autowired private PushCallback pushCallback; private static MqttClient client; private static MqttClient getClient() { return client; } private static void setClient(MqttClient client) { MqttPushClient.client = client; } /** * 客戶端連接 * * @param host ip+端口 * @param clientID 客戶端Id * @param username 用戶名 * @param password 密碼 * @param timeout 超時時間 * @param keepalive 保留數 */ public void connect(String host, String clientID, String username, String password, int timeout, int keepalive) { MqttClient client; try { client = new MqttClient(host, clientID, new MemoryPersistence()); MqttConnectOptions options = new MqttConnectOptions(); options.setCleanSession(true); options.setUserName(username); options.setPassword(password.toCharArray()); options.setConnectionTimeout(timeout); options.setKeepAliveInterval(keepalive); MqttPushClient.setClient(client); try {client.setCallback(pushCallback);client.connect(options); } catch (Exception e) {e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } } /** * 發布 * * @param qos 連接方式 * @param retained 是否保留 * @param topic 主題 * @param pushMessage 消息體 */ public void publish(int qos, boolean retained, String topic, String pushMessage) { MqttMessage message = new MqttMessage(); message.setQos(qos); message.setRetained(retained); message.setPayload(pushMessage.getBytes()); MqttTopic mTopic = MqttPushClient.getClient().getTopic(topic); if (null == mTopic) { logger.error('topic not exist'); } MqttDeliveryToken token; try { token = mTopic.publish(message); token.waitForCompletion(); } catch (MqttPersistenceException e) { e.printStackTrace(); } catch (MqttException e) { e.printStackTrace(); } } /** * 訂閱某個主題 * * @param topic 主題 * @param qos 連接方式 */ public void subscribe(String topic, int qos) { logger.info('開始訂閱主題' + topic); try { MqttPushClient.getClient().subscribe(topic, qos); } catch (MqttException e) { e.printStackTrace(); } }}

訂閱主題以及發布的方式等內容更多編寫最后在搞個測試看看我們的結果是否正確:

TestController

@RestController@RequestMapping('/')public class TestController { @Autowired private MqttPushClient mqttPushClient; @GetMapping(value = '/publishTopic') public String publishTopic() { String topicString = 'home/garden/fountain'; mqttPushClient.publish(0, false, topicString, '測試一下發布消息'); return 'ok'; } // 發送自定義消息內容(使用默認主題) @RequestMapping('/publishTopic/{data}') public String test1(@PathVariable('data') String data) { String topicString = 'home/garden/fountain'; mqttPushClient.publish(0,false,topicString, data); return 'ok'; } // 發送自定義消息內容,且指定主題 @RequestMapping('/publishTopic/{topic}/{data}') public String test2(@PathVariable('topic') String topic, @PathVariable('data') String data) { mqttPushClient.publish(0,false,topic, data); return 'ok'; }}

如此一來就OK!

你可以使用MQTT.fx進行測試。用Postman發出,就能夠查看最終的結果。在這里,因為時間的原因就不多說,有啥有趣的問題,咱們可以一同探討。 希望你希望,Damon將會不斷的分享各種有趣的開發小故事給大家娛樂。下一期,或在POI實現導出導入或者是ActiveMQ進行選擇。

到此這篇關于SpringBoot+MQTT+apollo實現訂閱發布功能的示例的文章就介紹到這了,更多相關SpringBoot+MQTT+apollo訂閱發布內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
六月丁香综合| 欧美日韩免费看片| 亚洲一区欧美| 麻豆91小视频| 婷婷亚洲五月| 91亚洲精品在看在线观看高清| 亚洲麻豆一区| 欧美激情五月| 黄色亚洲大片免费在线观看| 日韩中文字幕| 日韩综合在线| 婷婷久久免费视频| 亚洲综合电影| 亚洲字幕久久| 日韩在线短视频| 日本91福利区| 日韩精品网站| 人人精品久久| 欧美a级一区| 国产精品亚洲二区| 亚洲调教视频在线观看| 青青草91久久久久久久久| 亚洲天堂av影院| 亚洲免费观看高清完整版在线观| 国产一区2区在线观看| 丝瓜av网站精品一区二区| 国产精品黑丝在线播放| 亚洲人成网站在线在线观看| 精品国产欧美| 日韩精品中文字幕一区二区| 99精品在线| 国产精品亚洲综合久久| 国产亚洲福利| 国产一区二区三区日韩精品| 亚洲综合中文| 亚洲一本视频| 粉嫩av一区二区三区四区五区| 日韩一区二区三区精品| 五月天激情综合网| 国产一区二区三区四区| 国产精品一区二区三区四区在线观看 | 六月丁香综合| 欧美日韩精品免费观看视完整| 久久激五月天综合精品| 国产午夜精品一区二区三区欧美| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 国产日韩免费| 日韩综合一区二区三区| 99亚洲视频| 久久国产主播| 97精品中文字幕| 国产精久久久| 日本一区二区三区视频在线看| 国产亚洲在线| 国产中文一区| 99精品国产一区二区三区| 精品丝袜久久| 国产精品magnet| 国产精品香蕉| 国产精品入口久久| 国产精品一区二区三区美女 | 国产亚洲人成a在线v网站| 亚洲天堂免费| 男女性色大片免费观看一区二区| 99久久亚洲精品| 久久国产中文字幕| 亚洲91视频| 99久久久国产精品美女| 欧美成人日韩| 午夜久久久久| 亚洲高清影视| 蜜桃视频一区二区三区在线观看| 一区免费在线| 中文一区在线| 视频一区欧美精品| 伊人国产精品| 日本亚洲视频| 欧美日本不卡| 国产一区二区色噜噜| 激情黄产视频在线免费观看| 日韩欧美一区二区三区在线观看| 1000部精品久久久久久久久| 免费观看久久av| 性一交一乱一区二区洋洋av| 丝袜美腿高跟呻吟高潮一区| 亚洲一二三区视频| 国产日韩亚洲欧美精品| 欧美aa在线视频| 日韩在线视频精品| 狠狠色狠狠色综合日日tαg| aa国产精品| 综合国产在线| 欧美激情五月| 999久久久精品国产| 视频一区视频二区在线观看| 亚洲精品麻豆| 国产精品久久久久久久久久妞妞| 国产成人久久精品一区二区三区| 国产 日韩 欧美一区| 伊人久久亚洲影院| 日韩av网站免费在线| 美女视频黄 久久| 国产一区视频在线观看免费| 蜜臀va亚洲va欧美va天堂| 久久狠狠久久| 午夜精品成人av| 免费中文字幕日韩欧美| 国产精品亚洲欧美日韩一区在线| 国产v日韩v欧美v| 91成人精品| 国产毛片精品| 激情综合激情| 日本午夜免费一区二区| 91中文字幕精品永久在线| 亚洲精品一区二区妖精| 久久国产乱子精品免费女| 蜜桃精品在线| 日韩三级久久| 91精品一区二区三区综合在线爱| 免费人成精品欧美精品| 麻豆91在线播放| 丝袜诱惑制服诱惑色一区在线观看 | 麻豆国产在线| 国产精品美女| 麻豆91精品91久久久的内涵| 99视频+国产日韩欧美| 国产欧美日韩影院| 香蕉人人精品| 国产激情精品一区二区三区| 午夜视频精品| 精品一区二区三区中文字幕视频| 日韩视频一区| 美女精品久久| 香蕉久久夜色精品国产| 97精品国产福利一区二区三区| 一区二区三区四区精品视频| 日韩av自拍| 日本不卡一区二区| 欧美网站在线| 亚洲欧洲高清| 国产精品扒开腿做爽爽爽软件| 日韩一区二区免费看| 精品一区二区三区在线观看视频| 在线一区二区三区视频| 欧美日韩在线网站| 国产一区三区在线播放| 亚洲毛片一区| 中文一区二区| 亚洲天堂资源| 久久伊人久久| 日本午夜精品一区二区三区电影| 欧美日韩四区| 国产精品字幕| 欧美xxxx性| 欧美一区=区三区| 亚洲区国产区| 欧美~级网站不卡| 蜜臀国产一区| 久久久久久亚洲精品美女| 日韩超碰人人爽人人做人人添| 亚洲一区二区三区免费在线观看 | 九九综合九九| 亚洲黄色免费av| 美女国产一区二区三区| 日韩av一级片| 日韩高清中文字幕一区| 日韩精品一卡二卡三卡四卡无卡| 青青久久av| 三级精品视频| 日韩国产在线| 福利视频一区| 国产成人久久精品麻豆二区 | 日本亚洲最大的色成网站www| 九色精品91| 久久一区二区三区电影| 婷婷综合六月| 国产传媒av在线| 欧美日韩视频免费观看| 日韩大片在线播放| 国产精品蜜芽在线观看| 精品国产亚洲一区二区三区大结局| 久久国产乱子精品免费女| 日本欧美一区| 国产精品第十页| 卡一精品卡二卡三网站乱码| 欧美国产亚洲精品| 欧美精品二区| 久久一区视频| 国产美女高潮在线| 日韩精品一卡| 欧美日一区二区| 婷婷成人基地| 一区二区三区网站| 亚洲1区在线观看| 日韩成人一级| 免费精品一区| 日本午夜大片a在线观看| 亚洲一级高清| 免费观看在线色综合| 天堂俺去俺来也www久久婷婷|