簡體   English   中英

Spring Boot - 非Web應用程序的長期運行應用程序

[英]Spring Boot - long running application for non-web app

我有一個簡單的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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM