我正在尝试学习如何在 Spring-Integration 中处理 MQTT消息。 已创建一个转换器,每个MQTT主题都订阅一个MqttPahoMessageDrivenChannelAdapter来转换和使用消息。
问题在于我们的数据提供商正计划“加快”他一方的发布消息。因此,计划将其中的每个字段发布到单独的MQTT主题,而不是只包含几个主题(<= 10),每个主题都具有大约150个字段的消息。
这意味着我的转换器将不得不消耗大约。 1000个mqtt主题,但我不知道是否:
在此先感谢您的回答!
答案 0 :(得分:0)
我认为您的想法很有意义。
为此,您需要实现 passthrough MqttMessageConverter
并提供MqttMessage
作为payload
和topic
作为标头:< / p>
public class PassThroughMqttMessageConverter implements MqttMessageConverter {
@Override
public Message<?> toMessage(String topic, MqttMessage mqttMessage) {
return MessageBuilder.withPayload(mqttMessage)
.setHeader(MqttHeaders.RECEIVED_TOPIC, topic)
.build();
}
@Override
public Object fromMessage(Message<?> message, Class<?> targetClass) {
return null;
}
@Override
public Message<?> toMessage(Object payload, MessageHeaders headers) {
return null;
}
}
因此,在自定义ExecutorChannel
中提到transformer
之后,您真的将能够在下游执行目标转换。
您还可以考虑实现自定义MqttPahoClientFactory
(也可以使用DefaultMqttPahoClientFactory
的扩展名),并提供自定义ScheduledExecutorService
注入MqttClient
中您将在getClientInstance()
中创建。