Отправка сообщений на разные темы с помощью шлюза интеграции Spring

Я пытаюсь использовать Spring Integration для отправки сообщений mqtt брокеру, и я пытаюсь использовать интерфейс шлюза.

 @Bean
public MqttPahoClientFactory mqttClientFactory() {
    DefaultMqttPahoClientFactory factory = new DefaultMqttPahoClientFactory();
    //set the factory details
    return factory:
}

@Bean
@ServiceActivator(inputChannel = "mqttOutboundChannel")
public MessageHandler mqttOutbound() {
    MqttPahoMessageHandler messageHandler =
            new MqttPahoMessageHandler("randomString", mqttClientFactory());
    //set handler details
    messageHandler.setDefaultTopic(topic);
    return messageHandler;
}

@Bean
public MessageChannel mqttOutboundChannel() {
    return new DirectChannel();
}
@MessagingGateway(defaultRequestChannel = "mqttOutboundChannel")
private interface MyGateway {
    void sendToMqtt(String data);
}

Мой вопрос: если я хочу использовать обработчик шлюза для отправки сообщений на разные темы, как бы я это сделал, не создавая адаптер для каждой темы?

Благодарю.

Надеюсь, я четко сформулировал свой вопрос и код правильно отформатирован.

1 ответ

Решение

Вам необходимо установить целевую тему в заголовке сообщения.

Вот один из способов сделать это...

void sendToMqtt(String data, @Header(MqttHeaders.TOPIC) String topic);

Прокси шлюза будет собирать сообщение с заголовком, который затем используется исходящим адаптером.

Другие вопросы по тегам