java – Spring Boot – 非Web应用程序的长期运行应用程序

我有一个简单的
Spring-Boot应用程序,它只使用AMQP依赖项(只是’org.springframework.boot:spring-boot-starter-amqp’ – 例如没有Web依赖项,因此JAR中不包含app服务器).

我想要的只是让应用程序运行并监听队列并在收到消息时将一些信息记录到数据库 – 但是,由于没有应用程序服务器,一旦启动它就会再次关闭(因为那里)没有做任何事情).有没有一种最佳方法可以在监听消息的同时保持此应用程序的运行?

代码中没有什么令人惊讶的,只有标准的应用程序配置,然后还有一个标有@RabbitListener的类

@SpringBootApplication
class PersistenceSeriveApplication {

    static void main(String[] args) {
        SpringApplication.run PersistenceSeriveApplication, args
    }
}

@Configuration
@EnableRabbit
class QueueConfiguration {

    @Bean public Queue applicationPersistenceQueue( @Value( '${amqp.queues.persistence}' ) String queueName ) {
        new Queue( queueName )
    }
}

(我考虑的一个选项就是调整一个预定的过程 – 只是一个心跳或其他东西,这可能对监控很有帮助 – 但还有其他更好/标准的方法吗?)

最佳答案 您需要确保启动消息侦听器容器bean,如示例中所示:

 @Bean
 SimpleMessageListenerContainer container(ConnectionFactory connectionFactory, MessageListenerAdapter listenerAdapter) {
    SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
    container.setConnectionFactory(connectionFactory);
    container.setQueueNames(queueName);
    container.setMessageListener(listenerAdapter);
    return container;
}
点赞