java mqtt spring_springboot集成mqtt的实践开发

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值