Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

spring-integration-mqtt With multiple Mqtt Servers for subscription #220

Closed
rawat123 opened this issue Jan 27, 2018 · 1 comment
Closed

Comments

@rawat123
Copy link

I am using Spring's spring-integration-mqtt and i can connect to a single Mqtt server and can receive messages on subscribed topics , and now i want to make application which can connect to multiple Mqtt Servers and can receive data from every connection and i want to manage it as dynamic where i can add more Mqtt servers from database or text file.

a simple bean for single Mqtt connection for subscription is as follow

@Bean
    public MessageProducer inbound() {

        MqttPahoMessageDrivenChannelAdapter adapter2 =
                new MqttPahoMessageDrivenChannelAdapter("tcp://192.168.100.1:1883","mqtt_virtual_received_sus_2",
                                                 "DATA/#", "LD/#","CONF/#","CONFIG/#");
        adapter2.setCompletionTimeout(0);
        adapter2.setConverter(new DefaultPahoMessageConverter());
        adapter2.setQos(2);

        adapter2.setOutputChannel(mqttInputChannel());
        return adapter2;

    }

above code creates a connection for the mqtt server and can receive messages and if i copy paste the same code twice for second server with different Mqtt ip address i can connect to both Mqtt Server as follows

@Bean
        public MessageProducer inbound() {

            MqttPahoMessageDrivenChannelAdapter adapter2 =
                    new MqttPahoMessageDrivenChannelAdapter("tcp://192.168.100.1:1883","mqtt_virtual_received_sus_2",
                                                     "DATA/#", "LD/#","CONF/#","CONFIG/#");
            adapter2.setCompletionTimeout(0);
            adapter2.setConverter(new DefaultPahoMessageConverter());
            adapter2.setQos(2);

            adapter2.setOutputChannel(mqttInputChannel());
            return adapter2;

        }
@Bean
        public MessageProducer inbound2() {

            MqttPahoMessageDrivenChannelAdapter adapter2 =
                    new MqttPahoMessageDrivenChannelAdapter("tcp://192.168.100.14:1883","mqtt_virtual_received_sus_1",
                                                     "DATA/#", "LD/#","CONF/#","CONFIG/#");
            adapter2.setCompletionTimeout(0);
            adapter2.setConverter(new DefaultPahoMessageConverter());
            adapter2.setQos(2);

            adapter2.setOutputChannel(mqttInputChannel());
            return adapter2;

        }

above code also works fine and i can receive message from both Mqtt Servers, but is there any way i can manage it dynamically like as follows, i change the bean's return type to list, but didn't worked:

@Bean
 public List<MqttPahoMessageDrivenChannelAdapter> getAdapter () {
     List<MqttPahoMessageDrivenChannelAdapter > logConfList=new ArrayList<MqttPahoMessageDrivenChannelAdapter>();
     MqttPahoMessageDrivenChannelAdapter adapter2 =
             new MqttPahoMessageDrivenChannelAdapter("tcp://192.168.100.1:1883","mqtt_virtual_received_sus_2",
                                              "DATA/#", "LD/#","CONF/#","CONFIG/#");
     adapter2.setCompletionTimeout(0);
     adapter2.setConverter(new DefaultPahoMessageConverter());
     adapter2.setQos(2);

     adapter2.setOutputChannel(mqttInputChannel() );

     MqttPahoMessageDrivenChannelAdapter adapter =
             new MqttPahoMessageDrivenChannelAdapter("tcp://192.168.100.14:1883","mqtt_virtual_received_sus_1",
                                              "DATA/#", "LD/#","CONF/#","CONFIG/#");
     adapter.setCompletionTimeout(0);
     adapter.setConverter(new DefaultPahoMessageConverter());
     adapter.setQos(2);

     adapter.setOutputChannel(mqttInputChannel() );
     logConfList.add(adapter);
     logConfList.add(adapter2);

     return logConfList;

 }

is there any way i can manage these beans dynamically, where i can fetch mqtt server details from text file and in a for loop or something i can manage multiple connections.

@artembilan
Copy link
Member

Please, don't duplicate questions in different places: https://stackoverflow.com/questions/48474720/spring-integration-mqtt-with-multiple-mqtt-servers-for-subscription.

Moreover we don't manage questions here on GH. The StackOverflow is indeed the place to go.

Thank you for understanding.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants