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

为什么Apache Camel会导致优雅的关机

滕璞瑜
2023-03-14

你好,我有一个用Kotlin编写的应用程序,它使用Spring Boot框架和Apache Camel:https://camel.Apache.org/components/latest/smpp-component.html#_spring_boot_auto_configuration

所以我是Smpp协议的新手,我正在尝试连接到SMC模拟器,所以我想我的“客户机”应该在等待来自SMC的消息,在这种情况下,当我运行应用程序时,它似乎只是停止了。当它停止时,我会认为有什么不对劲。

   @Bean
    fun camelContextConfiguration(): CamelContextConfiguration{
        return object : CamelContextConfiguration {
            override fun afterApplicationStart(camelContext: CamelContext?) {
                logger.info("*********************************************************************************")
                //var query : Query?
                //val oldRoute : List<Route> = camelContext!!.routes
                camelContext!!.routes
                //logger.info("Old Routes")
                //logger.info(oldRoute.size.toString())
//                for(route:Route in oldRoute) {
//                    logger.info("Route with routeId {} is deleted",route.id)
//                    camelContext.stopRoute(route.id)
//                    camelContext.removeRoute(route.id)
//                }
                camelContext.isUseMDCLogging=true
                logger.info("ROUTES")
                    val routeDefinition = RouteDefinition()
                    routeDefinition.id="1"
                   routeDefinition.onException(Exception::class.java).handled(true)
                           .process(exceptionProcessor())
                           .end()
                   
                    routeDefinition.from("smpp://smppclient@smscsim.melroselabs.com:2775?password=password&enquireLinkTimer=3000&transactionTimer=5000&systemId=145244&systemType='Receiver'")
                    routeDefinition.to("log:com.app.smppdispenser.infraestructure.smpp?showBody=true&showHeaders=true")
                    routeDefinition.process(messageProcessor())
                    camelContext.addRouteDefinition(routeDefinition)
                   //routeDefinition.setHeader("CamelSmppCommandId", constant("query_sm"))
                    //routeDefinition.setHeader("CamelSmppSequenceNumber", constant("1"))
                    logger.info("Route is added with routeId {} ",routeDefinition.id)

                //}
                logger.info("CamelConfiguration afterApplicationStart OK")
            }
            override fun beforeApplicationStart(camelContext: CamelContext?) {
                logger.info("CamelConfiguration beforeApplicationStart")
            }

        }
    }

这是日志>

共有1个答案

公西浩
2023-03-14

有一些选择:

  • 添加一个spring boot starter web,它启动web服务器并保持应用程序运行
  • 使用如下所述的属性:https://camel.apache.org/camel-spring-boot/3.7.x/spring-boot.html#springboot-keepingapplicationalive
 类似资料:
  • 问题内容: 好吧,我试图理解并阅读可能导致它的原因,但我却无法理解: 我的代码中有这个地方: 事实是,当它尝试调用某些方法时,它将引发而不是其他预期的异常(特别是)抛出 。我实际上知道调用了什么方法,所以我直接转到该方法代码,并为应该抛出的行添加了一个块 ,它实际上按预期抛出。然而,当它上升时,以某种方式更改了上面的代码并没有 按预期进行。 是什么原因导致这种行为的?我该如何检查? 问题答案: 通

  • 为什么我在下面的代码段中的X轴上有一个溢出? 在我的网格容器上应用时,就会产生溢出。 null null https://codepen.io/anon/pen/wdjexz?editors=1100

  • 问题内容: 即使模型类中没有验证约束,我也会收到此错误(所有成员变量均已正确设置,但我在创建对象时仍然遇到此异常)。如何调试此错误? 问题答案: 每个都有一个数组。每个显示了您要保留的bean的哪个属性被侵犯。正如@Arthur正确指出的那样,违反Java持久性注释的结果也以s 结尾。 要调试你的问题,我会暂时赶在并打印出每个如下:

  • 问题内容: 遇到一个错误地使用 而不是 在其代码中的人,它没有显示为编译错误。 是因为 是相同的 ? 问题答案: 没有编译错误,因为它是有效的(尽管相当无用) 一元运算符 ,其使用方式与以下方式相同: Java语言规范中的相关部分是Unary Plus运算符+(第15.15.3节) 。它指定调用一元运算会导致操作数的一元数值提升(第5.6.1节)。这意味着: * 如果操作数是编译时类型的,,,或,

  • 我正在玩rxjava,发现如果在活动被销毁之前没有完成订阅,则存在内存泄漏的风险,因为“可观察对象保留对上下文的引用”。如果订阅没有取消订阅,则此类情况的演示之一如下所示。已销毁(来源:https://github.com/dlew/android-subscription-leaks/blob/master/app/src/main/java/net/danlew/rxsubscriptions

  • 请问上述代码的第70行换成第71行注释的内容时,为什么会造成死循环。 题目: https://www.acwing.com/problem/content/174/