【发布时间】:2016-04-21 02:25:16
【问题描述】:
如何不光彩地关闭 Camel 路由上下文?
单击按钮后,骆驼路线应立即停止。我不想耽搁。
每次我执行camelroute.context.stop() 时,都需要一些时间来停止,并且在那段时间里,由于路由处于活动状态,较早的队列和出队消息被发送到目标队列。
我想在单击所需按钮时中途停止路线。
有办法处理吗?
【问题讨论】:
标签: java apache jms apache-camel activemq
如何不光彩地关闭 Camel 路由上下文?
单击按钮后,骆驼路线应立即停止。我不想耽搁。
每次我执行camelroute.context.stop() 时,都需要一些时间来停止,并且在那段时间里,由于路由处于活动状态,较早的队列和出队消息被发送到目标队列。
我想在单击所需按钮时中途停止路线。
有办法处理吗?
【问题讨论】:
标签: java apache jms apache-camel activemq
看看DefaultShutdownStrategy的timeout property。
尝试在 Camel 上下文中将其设置为零:
<bean id="shutdownStrategy" class="org.apache.camel.impl.DefaultShutdownStrategy">
<property name="timeout" value="0"/>
</bean>
默认以秒为单位。
另外,如果您还没有,请查看 Camel 文档中的 Graceful Shutdown。
编辑 1: DefaultShutdownStrategy does not allow 0 timeouts。您可以尝试将其设置为 1 NANOSECOND,这可能会有所帮助:
<bean id="shutdownStrategy" class="org.apache.camel.impl.DefaultShutdownStrategy">
<property name="timeout" value="1"/>
<property name="timeUnit" value="NANOSECONDS" /
</bean>
或者,如果确保绝对立即关闭对您来说真的很重要,您可以实现自己的 ShutdownStrategy。
【讨论】: