In my project created by SpringBoot,
I added 2 main classes with @SpringBootApplication.
Because if I use STS, I can choose one main application when starting debugging.
But I found that while SpringDemoApplication is complete, RabbitMQApplication also works.
Is this a specification? work properly?
Here is this sample to play https://github.com/MariMurotani/SpringDemo/tree/6_rabbitMQ

SpringDemoApplication
package demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ApplicationContext; @SpringBootApplication public class SpringDemoApplication { public static void main(String[] args) { SpringApplication application = new SpringApplication(SpringDemoApplication.class); ApplicationContext context = application.run(args); } }
RabbitMQApplication
package demo; import java.util.Date; import org.codehaus.jackson.map.ObjectMapper; import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.BindingBuilder; import org.springframework.amqp.core.Queue; import org.springframework.amqp.core.TopicExchange; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import demo.configs.Const; import demo.dto.Mail; @SpringBootApplication public class RabbitMQApplication implements CommandLineRunner { @Autowired ApplicationContext context; @Autowired RabbitTemplate rabbitTemplate; @Bean Queue queue() { return new Queue(Const.RabbitMQMessageQue, false); } @Bean TopicExchange exchange() { return new TopicExchange("spring-boot-exchange"); } @Bean Binding binding(Queue queue, TopicExchange exchange) { return BindingBuilder.bind(queue).to(exchange).with(Const.RabbitMQMessageQue); } @Bean SimpleMessageListenerContainer container(ConnectionFactory connectionFactory) { SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(); container.setConnectionFactory(connectionFactory); container.setQueueNames(Const.RabbitMQMessageQue);
source share