Camel - DefaultReactiveExecutor

2024-04-25 18:32

本文主要是介绍Camel - DefaultReactiveExecutor,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Camel - DefaultReactiveExecutor

  • 参考

DefaultReactiveExecutor

作用:

用于创建Worker,并对监控Worker的运行情况;监控内容包括:

  • 已创建Worker
  • 正在执行的Worker
  • 当前挂起的任务数

一个Worker 对应一个Thread。

每个Worker创建时会记录自己的编号,并且会创建一个双端队列(Deque),如果是异步消息往队列头部添加任务,如果是同步消息往尾部添加任务。

org.apache.camel.impl.engine.DefaultReactiveExecutor.Worker#schedule

void schedule(Runnable runnable, boolean first, boolean main, boolean sync) {if (LOG.isTraceEnabled()) {LOG.trace("Schedule [first={}, main={}, sync={}]: {}", first, main, sync, runnable);}if (main) {if (!queue.isEmpty()) {if (back == null) {back = new ArrayDeque<>();}back.push(queue);queue = new ArrayDeque<>();}}if (first) {queue.addFirst(runnable);executor.pendingTasks.incrementAndGet();} else {queue.addLast(runnable);executor.pendingTasks.incrementAndGet();}if (!running || sync) {running = true;executor.runningWorkers.incrementAndGet();try {for (;;) {final Runnable polled = queue.pollFirst();if (polled == null) {if (back != null && !back.isEmpty()) {queue = back.pollFirst();continue;} else {break;}}try {executor.pendingTasks.decrementAndGet();if (LOG.isTraceEnabled()) {LOG.trace("Worker #{} running: {}", number, runnable);}polled.run();} catch (Throwable t) {LOG.warn("Error executing reactive work due to " + t.getMessage() + ". This exception is ignored.",t);}}} finally {running = false;executor.runningWorkers.decrementAndGet();}} else {if (LOG.isTraceEnabled()) {LOG.trace("Queuing reactive work: {}", runnable);}}
}

参考

async

这篇关于Camel - DefaultReactiveExecutor的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/935456

相关文章

vua 10700-Camel trading 贪心以及栈

大意:给一个表达式,可以让你任意套括号,问套完括号最大最小值是多少 贪心策略:最大的话,先+后*                  最小的话,先*后+ 用了一个栈堆模拟运算的次序 #include<stdio.h>#include<iostream>#include<stack>using namespace std;int main(){int N;scanf("%d",&

uva 10700 Camel trading

题意:求表达式的最大值和最小值,运算符只有+和*,明显就是优先级的不同而已,最小的就先算*,最大的就先算+,以往的表达式的题目我们都是用栈来完成的,这题也不例外 #include <iostream>#include <cstdio>#include <cstring>#include <stack>using namespace std;stack<long long>Min;sta

camel上下文对象

https://www.oschina.net/translate/getting-started-with-apache-camel-using Exchange中的Message Exchange中还有两个重要属性 inMessage 和 outMessage。 这两个属性分别代表Exchange在某个处理元素(处理器、表达式等)上的输入消息和输出消息 以上示例中,要注意"from"部

camel

首先from语句中填写的“jetty:http://0.0.0.0:8282/doHelloWorld”表示这个编排好的路由的消息入口:使用http传输协议,访问本物理节点上任何IP(例如127.0.0.1或者192.168.1.1),在端口8282上的请求,都可以将HTTP携带的消息传入这个路由。 // 主动向http URI描述的路径发出请求(http的URI笔者不需要再介绍了吧) from

Camel的数据转换

Camel的数据转换   在做系统集成的时候,必不可少的任务就是将数据从一种格式转换为另一种格式,再把转换后的格式发到目标系统: Camel提供的Message translator可以分为: ■ Using a Processor ■ Using beans ■ Using <transform> 1,利用processor的方式在Apache Camel框架入门示例 已经有个介

Camel - Rest Component 集成 Swagger UI

Camel - Rest Component 集成 Swagger UI 1. Spring boot 集成 Swagger UI1.1 pom配置1.2 访问swagger ui 2. Camel配置并启用Rest服务2.1 pom配置2.2 配置并启动jetty服务2.3 启动并获取swagger api信息 3. 测试参考 1. Spring boot 集成 Swagger

Camel异常策略匹配逻辑

Camel异常策略匹配逻辑 route 优先级大于 context匹配逻辑注意区分包装与继承获取异常包装层级遍历异常匹配处理策略获取最终的匹配策略 代码Test Code route 优先级大于 context 优先匹配 route 级别的异常策略, 然后匹配 context 级别的异常策略; 匹配逻辑 注意区分包装与继承 包装:ConnectException异常抛出后被

Camel异常处理策略

Camel异常处理策略 异常策略Gap detection一个OnException配置多个异常核心类 异常策略 异常策略主要用来拦截和处理特定的异常。 假设有如下异常: org.apache.camel.RuntimeCamelException (wrapper by Camel)+ com.mycompany.OrderFailedException+ java.ne

Camel - DefaultAsyncProcessorAwaitManager

DefaultAsyncProcessorAwaitManager 参考 主要用于路由异步处理时,等待另一个线程处理结束后,继续后续处理。 等待过程中,会择机执行积压任务。 如果当前任务一直被阻塞,会记录阻塞信息,并记录阻塞时间、总阻塞时间、最短阻塞时间、最长阻塞时间,阻塞中位数等信息。 AsyncProcessAwaitManager utilization[blocked

Camel Error Handler

Camel Error Handler 1. 实现原理2. Handler简介2.1 DefaultErrorHandler2.2 DeadLetterErrorHandler2.3 TransactionErrorHandler 3. 重试3.1 示例3.2 重试情况记录 4. ErrorHandler的作用域4.1 Context级别的ErrorHandler4.2 路由级别的Error