spring集成消息服务器,SpringBoot2.x集成MQTT实现消息订阅

/*** MQTT配置

* @Author: songyaru

* @Date: 2020/8/28 14:04

* @Version 1.0*/@Slf4j

@Configuration

@IntegrationComponentScanpublic classMqttReceiveConfig {

@Value("${spring.mqtt.username}")privateString username;

@Value("${spring.mqtt.password}")privateString password;

@Value("${spring.mqtt.url}")privateString hostUrl;

@Value("${spring.mqtt.client.id}")privateString clientId;

@Value("${spring.mqtt.default.topic}")privateString defaultTopic;

@Value("${spring.mqtt.default.completionTimeout}")private int completionTimeout;//连接超时//初始化连接

@BeanpublicMqttConnectOptions getMqttConnectOptions() {

MqttConnectOptions mqttConnectOptions= newMqttConnectOptions();

mqttConnectOptions.setUserName(username);

mqttConnectOptions.setPassword(password.toCharArray());

mqttConnectOptions.setServerURIs(newString[]{hostUrl});

mqttConnectOptions.setKeepAliveInterval(50);returnmqttConnectOptions;

}//初始化mqtt工厂

@BeanpublicMqttPahoClientFactory mqttClientFactory() {

DefaultMqttPahoClientFactory factory= newDefaultMqttPahoClientFactory();

factory.setConnectionOptions(getMqttConnectOptions());returnfactory;

}//接收通道

@Primary

@Bean("mqttInputChannel")publicMessageChannel mqttInputChannel() {return newDirectChannel();

}//配置client,监听的topic

@Beanpublic MessageProducer inbound(@Qualifier("mqttInputChannel") MessageChannel messageChannel) {

MqttPahoMessageDrivenChannelAdapter adapter=

new MqttPahoMessageDrivenChannelAdapter(clientId + "_inbound", mqttClientFactory(),defaultTopic);

adapter.setCompletionTimeout(completionTimeout);

adapter.setConverter(newDefaultPahoMessageConverter());

adapter.setQos(1);

adapter.setOutputChannel(messageChannel);returnadapter;

}//订阅消费数据,通过通道获取数据

@Bean

@ServiceActivator(inputChannel= "mqttInputChannel")publicMessageHandler handler() {return newMessageHandler() {

@Overridepublic void handleMessage(Message> message) throwsMessagingException {

log.info("主题:{},消息接收到的数据:{}", message.getHeaders().get("mqtt_receivedTopic"), message.getPayload());

}

};

}

}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值