当前位置: 首页 > 知识库问答 >
问题:

骆驼上下文在应用程序启动后立即启动关闭,没有明显的错误

况喜
2023-03-14

我的spring boot应用程序启动一条骆驼路线,从启用Kafka的Azure事件中心进行消费。在应用程序启动的消息之后,立即记录此消息:“INFO o.a.camel.spring.SpringCamelContext-Apache camel 2.24.0(CamelContext:camel-1)正在关闭”。

然后,任何飞行中的交换(如果存在的话)都会由驼峰路线成功处理,最终路线会关闭(正常),这也会终止应用程序。

没有显示错误消息,似乎没有任何错误,除了在应用程序启动后自动启动关闭......

知道为什么会这样吗?

我玩过Kafka的超时,但行为没有改变。

我已经将日志记录级别设置为跟踪,但仍然不明白为什么会启动关机。

除其他外,我使用这些库:spring boot starter、spring boot starter web、azure servicebus spring boot starter、camel kafka、camel spring boot starter、camel undertow 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事件中心的事件(并在事件可用时进行处理)。

相反,它会立即启动关闭(仍然成功处理任何飞行中的交换)——它只是优雅地关闭。没有错误消息。

感谢您的帮助!

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它开始关闭东西。。。

共有3个答案

孟栋
2023-03-14

这与Spring版本升级有关。

所描述的问题与不同Maven依赖关系之间的冲突有关。在尝试使用Apache Camel的最新版本Spring Boot时,我也遇到了同样的问题。

分析了依赖树之后,结果发现sping-webmvc的版本是5.2.9,而其他所有的Spring依赖都是5.2.8版本。

我已经解决了这个问题,使用了骆驼Spring引导依赖的新版本(3.6.0)

聂炜
2023-03-14

没有线程使应用程序保持活动状态。这就是为什么它会立即关闭。

您可能希望添加SpringBootStarterWeb,使其具有正在运行的web容器,或者您可以在我们的主类中具有防止关闭的循环。

我会选择web容器。因此,您还可以添加带有一些诊断信息的执行器框架。

柴昆杰
2023-03-14

我也有同样的问题,对于我来说,解决方案是将下一个依赖项添加到pom文件中。

<代码>

 类似资料:
  • 我在kubernetes集群上尝试使用Helm Chart进行spring boot微服务部署。但我注意到一个奇怪的问题,我的spring boot应用程序启动后却立即关闭 这是我的头盔模板-

  • 我已经为IntelliJ安装了Camel插件。 要开始调试,我们必须创建一个临时应用程序 您如何确切地知道本地加载的端口应用程序是什么?我怎样才能改变它?我没有找到关于。。。

  • 启动 1. 轻触主画面上您想启动的应用程序图标。 显示LiveArea™。 2. 轻触[开始]。 中断/继续 按下PS键即可返回LiveArea™。若要继续,请轻触[继续]。 关闭 1. 按下PS键。 返回LiveArea™。 2. 请由画面右上角将LiveArea™撕下。

  • 我在我的工作区中使用STS IDE运行了几个Spring Boot应用程序,在我对其中一个项目进行maven更新后,每个项目都在应用程序启动过程后立即停止。我甚至创建了一个最小的例子,只是为了开始一些事情,同样的事情发生了。 这是我的pom.xml 即使是那些入门示例也会在启动后立即停止。我会非常感谢这里的一些帮助。 编辑:正如Alexandru Marina在评论中所说,我使用的是快照而不是稳定

  • 我的Spring Boot应用程序不是Web服务器,但它是使用自定义协议的服务器(在本例中使用Camel)。 但是Spring Boot在启动后立即(优雅地)停止。我如何防止这种情况? 我希望应用程序停止,如果Ctrl C或编程。