gpt4 book ai didi

java - 从路线外停止 Camel 路线

转载 作者:行者123 更新时间:2023-12-04 17:54:23 28 4
gpt4 key购买 nike

我们有一个在 Karaf 2.4.3 和 Camel 2.15.3 上运行的数据处理应用程序。

在这个应用程序中,我们有一堆导入数据的路由。我们有一个管理 View ,其中列出了这些路由以及每条路由的起点。这些路由不直接导入数据,而是调用其他路由(其中一些在其他包中,通过 direct-vm 调用),有时直接调用,有时在拆分器中调用。

有没有办法也完全停止路由/从而停止进一步处理整个交换?

仅使用 stopRoute 时像这样的功能:

route.getRouteContext().getCamelContext().stopRoute(route.getId());

我最终收到一条成功消息 Graceful shutdown of 1 routes completed in 10 seconds - 交换仍在处理中...

所以我试图模仿 StopProcessor 的行为通过设置 stop 属性,但这也无济于事:
public void stopRoute(Route route) {
try {
Collection<InflightExchange> browse = route.getRouteContext().getCamelContext().getInflightRepository()
.browse();
for (InflightExchange inflightExchange : browse) {
String exchangeRouteId = inflightExchange.getRouteId();
if ((exchangeRouteId != null) && exchangeRouteId.equals(route.getId())) {
this.stopExchange(inflightExchange.getExchange());
}
}
} catch (Exception e) {
Notification.show("Error while trying to stop route", Type.ERROR_MESSAGE);
LOGGER.error(e, e);
}
}

public void stopExchange(Exchange exchange) throws Exception {
AsyncProcessorHelper.process(new AsyncProcessor() {

@Override
public void process(Exchange exchange) throws Exception {
AsyncProcessorHelper.process(this, exchange);
}

@Override
public boolean process(Exchange exchange, AsyncCallback callback) {
exchange.setProperty(Exchange.ROUTE_STOP, Boolean.TRUE);
callback.done(true);
return true;
}
}, exchange);
}

有什么方法可以完全阻止从路由外部处理交换?

最佳答案

可以换吗?
我用 exchange.setProperty(Exchange.ROUTE_STOP, true);路线停止流动,不去下一条路线。

关于java - 从路线外停止 Camel 路线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41671658/

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