博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot集成mqtt
阅读量:5893 次
发布时间:2019-06-19

本文共 2609 字,大约阅读时间需要 8 分钟。

  hot3.png

MQTT(Message Queuing Telemetry Transport)是基于二进制消息的发布/订阅编程模式的消息协议,非常适合需要低功耗和网络带宽有限的IoT场景。这里简单介绍一下如何在springboot中集成。

maven

org.springframework.boot
spring-boot-starter-integration
org.springframework.integration
spring-integration-stream
org.springframework.integration
spring-integration-mqtt

配置client factory

@Bean    public MqttPahoClientFactory mqttClientFactory() {        DefaultMqttPahoClientFactory factory = new DefaultMqttPahoClientFactory();        factory.setServerURIs("tcp://demo:1883");//        factory.setUserName("guest");//        factory.setPassword("guest");        return factory;    }

配置consumer

@Bean    public IntegrationFlow mqttInFlow() {        return IntegrationFlows.from(mqttInbound())                .transform(p -> p + ", received from MQTT")                .handle(logger())                .get();    }    private LoggingHandler logger() {        LoggingHandler loggingHandler = new LoggingHandler("INFO");        loggingHandler.setLoggerName("siSample");        return loggingHandler;    }    @Bean    public MessageProducerSupport mqttInbound() {        MqttPahoMessageDrivenChannelAdapter adapter = new MqttPahoMessageDrivenChannelAdapter("siSampleConsumer",                mqttClientFactory(), "siSampleTopic");        adapter.setCompletionTimeout(5000);        adapter.setConverter(new DefaultPahoMessageConverter());        adapter.setQos(1);        return adapter;    }

配置producer

@Bean    public IntegrationFlow mqttOutFlow() {        //console input//        return IntegrationFlows.from(CharacterStreamReadingMessageSource.stdin(),//                e -> e.poller(Pollers.fixedDelay(1000)))//                .transform(p -> p + " sent to MQTT")//                .handle(mqttOutbound())//                .get();        return IntegrationFlows.from(outChannel())                .handle(mqttOutbound())                .get();    }        @Bean    public MessageChannel outChannel() {        return new DirectChannel();    }    @Bean    public MessageHandler mqttOutbound() {        MqttPahoMessageHandler messageHandler = new MqttPahoMessageHandler("siSamplePublisher", mqttClientFactory());        messageHandler.setAsync(true);        messageHandler.setDefaultTopic("siSampleTopic");        return messageHandler;    }

配置MessagingGateway

@MessagingGateway(defaultRequestChannel = "outChannel")public interface MsgWriter {    void write(String note);}

这样就大功告成了

doc

转载于:https://my.oschina.net/go4it/blog/1506144

你可能感兴趣的文章
nginx做反向负载均衡,后端服务器获取真实客户端ip(转)
查看>>
nfs配置样例
查看>>
Docker误区+技巧+转换关系
查看>>
私有云和混合云成功的四个关键因素
查看>>
用C++如何实现开放API接口服务器
查看>>
iOS 中 Storyboard 与 Xib 间控制器跳转 - 简化整理完整版
查看>>
leetcode 19 Remove Nth Node From End of List
查看>>
boost全平台编译方法
查看>>
对于容器环境来说 全栈监控究竟意味着什么?
查看>>
我们专访了神龙云服务器产品负责人,看懂阿里云发布的“神龙”到底“神”在哪里...
查看>>
弹性与性能兼俱,阿里云神龙云服务器全解析
查看>>
什么“物”联什么“网”? —从网际网络发展谈起
查看>>
如何像NASA顶级程序员一样编程 —— 10条重要原则
查看>>
web前端初学技能——5大web前端核心技能
查看>>
Java枚举类型enum
查看>>
传统数据中心:整合效率是唯一出路
查看>>
带着最完整的语音方案,Rokid CEO祝铭明三年后重返云栖大会
查看>>
Blitz++与MTL两大数值计算程序库(C++)的简介
查看>>
企业云计算难道只能靠大肆宣传
查看>>
数据中心是新的污染
查看>>