gpt4 book ai didi

spring - 如何仅在关机时执行 Camel 路线?

转载 作者:行者123 更新时间:2023-12-04 19:48:37 26 4
gpt4 key购买 nike

我有一个 Camel 2.13.1 应用程序,它使用我通过 CXF 组件访问的外部 Web 服务。我使用 Spring XML 路由元素的 startupOrder 属性来确保在我设置为在启动时调用一次的路由中调用 Web 服务的登录操作(使用计时器组件)。

当我的应用程序关闭时,我希望 Camel 调用 Web 服务并执行注销操作,但我看不到执行此操作的好方法。我目前正在使用 Spring DSL,并将 org.apache.camel.spi.ShutdownStrategy 接口(interface)作为我唯一的希望,但我能否从中执行包含我的 CXF 生产者的路由?目前看不出如何。

正在寻找一些选项,并且更愿意使用 Spring DSL 来指定路由,如下所示:-

    <route id="logoutFromWebServiceOnShutdownRoute">
<from uri="direct:logoutFromWebServiceOnShutdown" />
<process ref="prepareWebServiceLogoutProcessor" />
<to uri="cxf:bean:webServiceEndpoint?defaultOperationName=logout" />
<process ref="webServiceLogoutResponseProcessor" />
</route>

只需要知道如何在关机时调用它!我将 Camel 作为 WAR 来运行。

最佳答案

我已经尝试了路由策略,但无法正常工作。我需要有问题的路由只在关机时运行一次,并且看不到如何使用路由策略来完成。

相反,我通过在调用我的注销代码的 bean 上包含 destroy-method 属性来利用 Spring。

<bean class="com.chris.MyAuthenticationManager" destroy-method="logout" />

这在 Camel 关闭后运行,并允许我只运行一次代码。不利的一面是我不能使用 Camel 注销并且我的登录代码与我的注销代码不同。但是,它可以工作并且现在很稳定。

关于spring - 如何仅在关机时执行 Camel 路线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24527504/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com