嗨,我在camel中有一个JMS消费者路由,我的要求是在特定事件时停止/暂停该路由(基于某个字段值),然后使用调度器恢复该路由。为此,我创建了两个路由,一个是我的原始jms消费者路由,另一个是调度程序路由,它们恢复jms消费者路由,虽然我能够暂停路由,但第二个路由不恢复暂停的路由,它显示的状态为已启动。
以下是我的两条路线
from("activeMQ:demo.audit.event1?testConnectionOnStartup=true&acknowledgementModeName=CLIENT_ACKNOWLEDGE")
.routeId("javadslconsumer")
.log("before stopping==="+new Date().toString())
.process(new Processor() {
@Override
public void process(final Exchange exchange) throws Exception {
try {
Route route = exchange.getContext().getRoute("javadslconsumer");
System.out.println("route.supportsSuspension()"+route.supportsSuspension());
exchange.getContext().suspendRoute("javadslconsumer",1l,TimeUnit.SECONDS);
// create another helper route, using which we can start or resume this route based
// on the current life cycle phase of this route.
} catch (Exception e) {
// ignore
e.printStackTrace();
}
}
})
.log("after stopping logs==="+new Date().toString())
.unmarshal(dataFormat)
.beanRef("auditProcessor", "getErrorAuditDTO")
.beanRef("auditProcessor", "processCreateAudit");
from("timer:dlqscheduler?period=6000&fixedRate=true")
.process(new Processor(){
@Override
public void process(Exchange exchange) throws Exception {
System.out.println("timer process started");
try {
exchange.getContext().resumeRoute("javadslconsumer");
//exchange.getContext().startRoute("javadslconsumer");
} catch (Exception e) {
System.out.println("-----d-d-d-d-"+e.getMessage());
}
ServiceStatus serviceStatus = getContext().getRouteStatus("javadslconsumer");
System.out.println("serviceStatus.isStopped()"+serviceStatus.isStopped()); // showing false instead of true
System.out.println("serviceStatus.isSuspended()"+serviceStatus.isSuspended()); // showing false instead of true
System.out.println("serviceStatus"+serviceStatus);// showing started
}
})
.log("after resuming the route javadslconsumer");
请帮助我如何实现上述场景。
你需要给它超过1秒的时间。这是一个后备超时,所以如果暂停不能在1秒内发生,它让路由运行。例如,阅读你使用的API的javadoc留档,你可以看到该信息。
顺便说一句,还有一个controlbus组件,因此您可以向endpoint发送消息以暂停/恢复路由。
null
问题内容: 我有一个基本的Swing UI,带有一个标记为“播放”的按钮。按下按钮后,标签变为“暂停”。现在,当按下按钮时,它变为“继续”。 在“播放”中,我将实例化并执行一个SwingWorker。我想要的是能够暂停该线程(不要取消该线程),并根据上述按钮按下来恢复它。但是,我不想在doInBackground()中求助于Thread.sleep()。这似乎有点骇人听闻。有什么方法可以阻止运行d
我要做的是暂停< code>KafkaConsumer,如果在使用消息的过程中出现错误。 这是我写的 然后我写了一个REST服务来恢复消费者 现在,我有两个问题。第一个问题:当我打电话给消费者时。来自<code>@KafkaListener</code>注释方法的pause()会发生什么?消费者立即暂停,或者我可以接收到同一主题分区的其他偏移量上的其他消息。例如,我有偏移量为3的“message1
问题内容: 我在viewDidAppear中有一个图像,并用以下代码对其进行了动画处理: 我想在点击时暂停动画,如果再次点击它则继续播放动画。 问题答案: 暂停和恢复动画的2个功能,我从这里开始转换为Swift。 我有一个按钮可以暂停或恢复在中初始化的动画:
有些情况下,例如爬取大的站点,我们希望能暂停爬取,之后再恢复运行。 Scrapy通过如下工具支持这个功能: 一个把调度请求保存在磁盘的调度器 一个把访问请求保存在磁盘的副本过滤器[duplicates filter] 一个能持续保持爬虫状态(键/值对)的扩展 Job 路径 要启用持久化支持,你只需要通过 JOBDIR 设置 job directory 选项。这个路径将会存储 所有的请求数据来保持一
问题内容: 我一直在仔细研究Apache Camel文档,试图对它的两个 最基本 概念(端点和路由)有一个具体的了解,尽管这些术语在文档中各处都使用,但是我找不到真正定义它们的参考。是以及它们的用途。尽管它们的名称听起来很明显,而且我 想 我理解它们的含义,但是现在我已被分配到一项使我深深陷入Apache Camel Land的任务,而了解这些机制的绝对至关重要是。 我的猜测是,“端点”只是一个b