Отправка сообщений на разные темы с помощью шлюза интеграции 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);
Прокси шлюза будет собирать сообщение с заголовком, который затем используется исходящим адаптером.