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

如何仅在关机时执行骆驼路线?

单于煌
2023-03-14

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

当我的应用程序关闭时,我想调用web服务并执行注销操作,但我看不到一个好方法。目前我正在使用Spring DSL,并正在研究该组织。阿帕奇。骆驼spi。ShutdownStrategy接口是我唯一的希望,但我能执行一条包含我的CXF生产者的路由吗?目前看不出有什么效果。

寻找一些选项,并希望使用Spring DSL来指定路由,如:-

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

只需要知道如何在关机时调用它!我跑骆驼是为了打仗。

共有1个答案

拓拔弘扬
2023-03-14

我试过路线政策,但没能奏效。我需要有问题的路由只在关机时运行一次,不知道如何使用路由策略来实现这一点。

相反,我利用了Spring,在调用我的注销代码的bean上包含了destroy方法属性。

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

这在Camel关闭后运行,允许我只运行一次代码。缺点是我不能使用Camel注销,我的登录代码和我的注销代码不同。然而,它工作正常,现在很稳定。

 类似资料:
  • 如何在Java的运行时添加骆驼路线?我找到了一个Grails示例,但我已经在Java实现了它。 我的应用程序上下文。xml已经有一些预定义的静态路由,我想在运行时向它添加一些动态路由。可能吗?因为包含动态路由的唯一方法是编写路由。然后将路由定义加载到上下文。它将如何在现有的静态路由上工作?运行时路由

  • 我的Apache骆驼项目开始有一个相当好的结构,但我陷入了困境,因为我的routeContext中的路由无限执行。我的所有路由都使用SQL组件,我希望所有路由只执行一次。 我发现,当我的routeContext中有两条路由时,两条路由都只执行一次,但是一旦我添加了第三条路由(不管第三条路由是什么),camel就开始无限执行所有路由。我所有的路由都导致sql插入,因此相同的路由运行多次会导致重复键错

  • 我正试图在GAE上开始一条骆驼路线,但却撞上了一堵又一堵砖墙。首先,我尝试了如下路线: 但那什么都起不到作用。由于对Camel和GAE都是新手,我怀疑这是因为组件在路由开始时不充当使用者。然后我试着启动计时器: 却从GAE中得到了一个严重的错误: 错误:拒绝访问(java.lang.RuntimePermission modifyThreadGroup) 事实证明,您不能在GAE上创建新的实例,而

  • 有一条骆驼路线,它被处理,异常由处理。代码如下所示: 它是有效的,并且在错误被处理后,事务有一个提交:,但是然后消息再次被放入输入队列中,事务从头开始(无尽循环)。 我们正在使用IBM MQ,我认为这种回滚是由MQ执行的,而不是从camel路线执行的。所以问题是:我能告诉MQ我处理了异常,并且它不应该再次回滚吗?

  • 我有一个Camel route,它使用队列中的消息并将消息存储到数据库中。现在,我想以一种优雅的方式手动关闭运行骆驼路线。我有一个RestEndpoint,每当我需要停止Camel route时就会被触发。此endpoint应停止路由。但是,如果在关闭期间有任何正在运行的消息或事务,则必须在不消耗来自camel route的("")endpoint的任何新消息的情况下成功完成,并在完成正在运行的消

  • 我正在研究一个骆驼原型,它在同一骆驼环境中使用两个起点。 第一个路由使用用于“配置”应用程序的消息。消息通过配置服务bean加载到配置存储库中: 第二个路由实现了收件人列表eip模式,将不同类型的输入消息传递给许多收件人,这些收件人从同一个配置存储库中按顺序读取: 现在出现的问题是如何同步它们,因此如果第一个路由正在处理新数据,则第二个路由“等待”。 我是Apache Camel的新手,对如何处理