Nume Prenume
Nume Prenume

Reputation: 73

Sending messages to different topics using spring integration gateway

I am trying to use spring integration for send mqtt messages to a broker and I am trying to use the gateway interface.

 @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);
}

My question is: If I want to use the gateway handler to send messages to different topics how would I do that without having to create an adapter for each topic ?

Thanks.

Hope I formulated my question clearly and the code is properly formatted.

Upvotes: 5

Views: 1543

Answers (1)

Gary Russell
Gary Russell

Reputation: 174494

You need to set the target topic in a message header.

Here is one way to do that...

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

The gateway proxy will assemble the message with the header, which is then used by the outbound adapter.

Upvotes: 6

Related Questions