Контекст верблюда инициирует отключение сразу после запуска приложения, без явной ошибки - PullRequest
0 голосов
/ 06 июня 2019

Мое приложение весенней загрузки запускает маршрут Camel, который используется из концентратора событий Azure с включенной Kafka. Сразу после сообщения о запуске приложения это сообщение заносится в журнал: «INFO o.a.camel.spring.SpringCamelContext - Apache Camel 2.24.0 (CamelContext: camel-1) завершает работу».

Затем любые обмены в полете (если они существуют) успешно обрабатываются маршрутом Camel, и в итоге маршрут отключается (изящно), что также завершает работу приложения.

Сообщения об ошибках не отображаются, кажется, что ничего не происходит, за исключением того, что завершение работы запускается автоматически сразу после запуска приложения ...

Есть идеи, почему это происходит?

Я поиграл с таймаутами для Кафки, но в поведении ничего не изменилось.

Я установил уровень ведения журнала TRACE, но до сих пор не понимаю, почему инициируется отключение.

В числе прочих я использую следующие библиотеки: стартер весенней загрузки, стартер весенней загрузки, лазурный сервисбус, стартер начальной загрузки, верблюжья кафка, верблюд весенняя загрузка, стартер верблюд -starter

Вот как начинается маршрут:

            from("kafka:dummytopic?brokers=dummy.servicebus.windows.net:9093&topic={{event.hubs.hub.magento}}&groupId={{event.hubs.consumer-group}}"
                    + "&consumersCount=1"
                    + "&autoOffsetReset=latest"
                    + "&saslMechanism=PLAIN"
                    + "&securityProtocol=SASL_SSL"
                    + "&sslProtocol=TLSv1.2"
                    + "&sslEnabledProtocols=TLSv1.2"
                    + "&sslEndpointAlgorithm=HTTPS"
                    + "&saslJaasConfig=" + saslJaasConfig
                    + "&autoCommitEnable=true")
.....

Обычно маршрут должен продолжать работать и опрашивать Kafka Event Hub на наличие событий (и обрабатывать их, когда они доступны).

Вместо этого он немедленно инициирует отключение (все еще успешно обрабатывает любые обмены в полете) - он просто корректно завершает работу. Нет сообщений об ошибках.

Любая помощь приветствуется!

PS: это выписка из журнала трассировки:

15:01:40.867 [main] INFO  c.i.s.n.NotificationMicroserviceApplication - Started NotificationMicroserviceApplication in 10.516 seconds (JVM running for 14.643)
15:01:40.868 [main] TRACE o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'camelContext'
15:01:40.868 [main] TRACE o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'springApplicationAdminRegistrar'
15:01:40.868 [main] DEBUG o.a.camel.spring.SpringCamelContext - onApplicationEvent: org.springframework.boot.context.event.ApplicationStartedEvent[source=org.springframework.boot.SpringApplication@22aefae0]
15:01:40.870 [main] TRACE o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'camelContext'
15:01:40.870 [main] TRACE o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'springApplicationAdminRegistrar'
15:01:40.870 [main] DEBUG o.a.camel.spring.SpringCamelContext - onApplicationEvent: org.springframework.boot.context.event.ApplicationReadyEvent[source=org.springframework.boot.SpringApplication@22aefae0]
15:01:40.872 [Thread-37] DEBUG o.s.c.a.AnnotationConfigApplicationContext - Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@2cd2a21f, started on Thu Jun 06 15:01:31 EEST 2019
15:01:40.873 [Thread-37] TRACE o.s.c.e.PropertySourcesPropertyResolver - Searching for key 'spring.liveBeansView.mbeanDomain' in PropertySource 'configurationProperties'
15:01:40.873 [Thread-37] TRACE o.s.c.e.PropertySourcesPropertyResolver - Searching for key 'spring.liveBeansView.mbeanDomain' in PropertySource 'systemProperties'
15:01:40.873 [Thread-37] DEBUG o.s.c.e.PropertySourcesPropertyResolver - Found key 'spring.liveBeansView.mbeanDomain' in PropertySource 'systemProperties' with value of type String
15:01:40.874 [Thread-37] TRACE o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'camelContext'
15:01:40.874 [Thread-37] TRACE o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'springApplicationAdminRegistrar'
15:01:40.875 [Thread-37] DEBUG o.a.camel.spring.SpringCamelContext - onApplicationEvent: org.springframework.context.event.ContextClosedEvent[source=org.springframework.context.annotation.AnnotationConfigApplicationContext@2cd2a21f, started on Thu Jun 06 15:01:31 EEST 2019]
15:01:40.877 [Thread-37] TRACE o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'camelContext'
15:01:40.877 [Thread-37] TRACE o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'lifecycleProcessor'
15:01:40.879 [Thread-37] DEBUG o.s.c.s.DefaultLifecycleProcessor - Stopping beans in phase 2147483647
15:01:40.879 [Thread-37] TRACE o.s.c.s.DefaultLifecycleProcessor - Stopping bean 'camelContext' of type [org.apache.camel.spring.SpringCamelContext]
15:01:40.879 [Thread-37] INFO  o.a.camel.spring.SpringCamelContext - Apache Camel 2.24.0 (CamelContext: camel-1) is shutting down
15:01:40.879 [Thread-37] TRACE org.apache.camel.util.ServiceHelper - Stopping service org.apache.camel.impl.DefaultRouteController@108b121f
15:01:40.879 [Thread-37] TRACE org.apache.camel.util.ServiceHelper - Shutting down service org.apache.camel.impl.DefaultRouteController@108b121f
15:01:40.879 [Thread-37] TRACE o.a.camel.support.ServiceSupport - Service already stopped
15:01:40.880 [Thread-37] INFO  o.a.c.impl.DefaultShutdownStrategy - Starting to graceful shutdown 1 routes (timeout 300 seconds)
15:01:40.880 [Thread-37] TRACE o.a.c.m.DefaultManagementLifecycleStrategy - Checking whether to register org.apache.camel.util.concurrent.RejectableThreadPoolExecutor@11ee4d34[Running, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0][ShutdownTask] from route: null
15:01:40.880 [Thread-37] DEBUG o.a.c.i.DefaultExecutorServiceManager - Created new ThreadPool for source: org.apache.camel.impl.DefaultShutdownStrategy@58b97c15 with name: ShutdownTask. -> org.apache.camel.util.concurrent.RejectableThreadPoolExecutor@11ee4d34[Running, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0][ShutdownTask]
15:01:41.073 [Thread-37] TRACE o.a.c.u.c.CamelThreadFactory - Created thread[Camel (camel-1) thread #2 - ShutdownTask] -> Thread[Camel (camel-1) thread #2 - ShutdownTask,5,main]
15:01:41.075 [Camel (camel-1) thread #2 - ShutdownTask] DEBUG o.a.c.impl.DefaultShutdownStrategy - There are 1 routes to shutdown
15:01:41.075 [Camel (camel-1) thread #2 - ShutdownTask] TRACE o.a.c.impl.DefaultShutdownStrategy - Shutting down route: routeEventHub with options [Default,CompleteCurrentTaskOnly]

Вы видите, что в 15: 01: 40.872 он начинает закрывать вещи ...

Ответы [ 2 ]

0 голосов
/ 07 июня 2019

В конце концов, это решение сработало:

@Slf4j
@SpringBootApplication
public class NotificationMicroserviceApplication implements CommandLineRunner {

    public static void main(String[] args) {
        SpringApplication.run(NotificationMicroserviceApplication.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
        log.info("You can press Ctrl+C anytime to shutdown application");
        Thread.currentThread().join();
    }
}
0 голосов
/ 06 июня 2019

Нет потока, который поддерживает работу приложения. Вот почему он немедленно отключается.

Возможно, вы захотите добавить spring-boot-starter-web для запуска веб-контейнера или в нашем главном классе может быть цикл, предотвращающий выключение.

Я бы пошел за веб-контейнером. Таким образом, вы можете также добавить каркас привода с некоторой диагностической информацией.

...