【发布时间】:2021-01-28 16:44:42
【问题描述】:
我想将收到的消息从 mqtt-servet 转换为 java 对象。我找不到提示如何使用弹簧集成工具。这是代码
@Bean
public MqttPahoClientFactory mqttClientFactory() {
DefaultMqttPahoClientFactory factory = new DefaultMqttPahoClientFactory();
MqttConnectOptions options = new MqttConnectOptions();
options.setServerURIs(new String[]
{
"ssl://"+this.hostname+":"+this.port,
}
);
options.setUserName(this.username);
options.setPassword(this.password.toCharArray());
factory.setConnectionOptions(options);
return factory;
}
@Bean
public MessageProducer inboundSendorData() {
String clientId = "Java_" + UUID.randomUUID().toString();
MqttPahoMessageDrivenChannelAdapter adapter = new MqttPahoMessageDrivenChannelAdapter(
clientId,
this.mqttClientFactory(),
"sensordata"
);
//DefaultPahoMessageConverter converter = new DefaultPahoMessageConverter();
//adapter.setConverter(converter);
adapter.setCompletionTimeout(5000);
adapter.setConverter(new DefaultPahoMessageConverter());
adapter.setQos(1);
adapter.setOutputChannel(mqttInputChannelSensorData());
return adapter;
}
@Bean
public MessageChannel mqttInputChannelSensorData() {
return new DirectChannel();
}
@Bean
@ServiceActivator(inputChannel = "mqttInputChannelSensorData")
public MessageHandler handlerSensorData() {
return new MqttSubSensorHandler();
}
这是处理程序的代码
public class MqttSubSensorHandler implements MessageHandler {
@Autowired
private SensorRepository sensorRepository;
@Autowired
public MqttSubSensorHandler(SensorRepository sensorRepository) {
this.sensorRepository = sensorRepository;
}
public MqttSubSensorHandler() {
}
public void handleResponse(Message<?> message) {
}
@Override
public void handleMessage(Message<?> message) throws MessagingException {
System.out.println(message.getPayload());
}
}
我认为这是可能的,因为 Spring JMS 是可能的。建立 JMS 连接的方法也非常相似。
【问题讨论】:
标签: spring jackson spring-integration mqtt