Я думаю, что ваша идея имеет смысл.
Для этой цели вам нужно реализовать сквозной MqttMessageConverter
и предоставить MqttMessage
как payload
и topic
какзаголовок:
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()
.