Apache Camel中的断路器模式

骆驼通常在分布式环境中用于访问远程资源。 远程服务可能由于各种原因和期间而失败。 对于短时间后暂时不可用且可恢复的服务,重试策略可能会有所帮助。 但是某些服务可能会失败或挂起更长时间,从而使调用应用程序无响应且速度缓慢。 防止级联故障和关键资源耗尽的一个好策略是Michael Nygard在Release It!中描述的断路器模式。 书。
断路器是一种有状态模式,用于包装容易发生故障的资源并监视错误。 最初,断路器处于关闭状态 ,并将所有调用传递给包装的资源。 当故障达到某个阈值时,电路将转为打开状态 ,在此状态下,错误将错误返回给调用方,而没有实际调用包装的资源。 这样可以防止已经发生故障的资源过载。 在这种状态下,我们需要一种机制来检测故障是否已经结束并开始调用受保护的资源。 这就是所谓的半开状态的第三个状态。 在上次故障之后的一定时间后达到此状态。 在这种状态下,调用将传递到受保护的资源,但是调用的结果很重要。 如果调用成功,则假定受保护的资源已恢复并且电路进入关闭状态 ,如果调用失败,则重置超时,并将电路移回到拒绝所有调用的打开状态 。 这是Martin Fowler 帖子中Circuit Breaker的状态图:

州

骆驼如何实现断路器?

Camel的最新快照版本提供了Circuit Breaker,作为负载均衡器策略。
Camel负载平衡器已经具有用于Round Robin,Random,Failover等的策略,现在还具有CircuiBreaker策略。

这是一个示例负载均衡器,它使用具有2个错误的阈值和1秒的HalfOpenAfter超时阈值的断路器策略。 还要注意,此策略仅适用于由MyCustomException引起的错误

new RouteBuilder() {public void configure() {from("direct:start").loadBalance().circuitBreaker(2, 1000L, MyCustomException.class).to("mock:result");}
};

这是使用Spring XML DSL的相同示例:

<route><from uri="direct:start"/><loadBalance><circuitBreaker threshold="2" halfOpenAfter="1000"><exception>MyCustomException</exception></circuitBreaker><to uri="mock:result"/></loadBalance>
</route>

翻译自: https://www.javacodegeeks.com/2014/04/circuit-breaker-pattern-in-apache-camel.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/364550.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入学习决策树算法原理

分类技术&#xff08;或分类法&#xff09;是一种根据输入数据建立分类模型的系统方法&#xff0c;分类法的例子包括决策分类法&#xff0c;基于规则的分类法&#xff0c;神经网络&#xff0c;支持向量机和朴素贝叶斯分类法。这些技术都使用一种学习算法&#xff08;learning a…

Java 8 Friday Goodies:精益并发

在Data Geekery &#xff0c;我们喜欢Java。 而且&#xff0c;由于我们真的很喜欢jOOQ的流畅的API和查询DSL &#xff0c;我们对Java 8将为我们的生态系统带来什么感到非常兴奋。 我们已经写了一些关于Java 8好东西的博客 &#xff0c;现在我们觉得是时候开始一个新的博客系列了…

Floyd最短路(带路径输出)

摘要(以下内容来自百度) Floyd算法又称为插点法&#xff0c;是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法&#xff0c;与Dijkstra算法类似。 该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特弗洛伊德命名。 简介编辑 在…

CSS 小结笔记之清除浮动

浮动是一个非常好用的属性&#xff0c;但是有时会出现一些问题&#xff0c;需要进行清除浮动。例如 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-wi…

路由与交换--交换机常用配置及其实验案例

1 交换机常用配置命令 1.1 配置主机名与口令 Switch>enable Switch#config t Switch(config)#hostname SA SA(config)#enable password cisco&#xff08;明文&#xff09; SA(config)#enable secret cisco&#xff08;暗文&#xff09; SA(config)#exit SA#show running-co…

linux自动启动network服务,Windows/Linux 创建开机启动服务

系统服务是一种应用程序类型&#xff0c;它在后台运行。服务应用程序通常可以在本地和通过网络为用户提供一些功能。有些软件无需安装解压就能使用&#xff0c;或者在安装时未向系统注册服务。如果我们需要开机启动&#xff0c;需要手动创建服务。Windows系统篇相对于在注册表中…

Xshell 基本使用方式 (1) -- 使用Xshell 连接 VMware下的linux系统

在VMware的虚拟机设置下的网络适配器设置成桥接模式&#xff0c;点击确定。 在终端中输入ifconfig命令查看IP 打开Xshell 新建会话 输入刚刚获取的IP地址&#xff0c;我的是219.219.198.225 如果点击右侧的用户身份验证 输入你的linux登录用户名以及密码 点击连接 可以看到已经…

django01

Django的下载与基本命令: 1、下载Django&#xff1a; pip3 install django 2、创建一个django project django-admin.py startproject mysite manage.py ----- Django项目里面的工具&#xff0c;通过它可以调用django shell和数据库等。    settings.py ---- 包含了项目的…

如何在linux环境下安装kvm,如何在Linux发行版上安装和配置KVM和Open vSwitch?

在如今多租户模式的数据中心环境下&#xff0c;虚拟化技术正从传统的基于虚拟机管理程序的服务器虚拟化&#xff0c;扩展到网络虚拟化。在这种环境下&#xff0c;基于软件的虚拟交换机通常连同虚拟机管理程序一起部署在服务器上&#xff0c;串联起了不同虚拟机之间传送的流量。…

hanlp中的N最短路径分词

N-最短路径 是中科院分词工具NLPIR进行分词用到的一个重要算法&#xff0c;张华平、刘群老师在论文《基于N-最短路径方法的中文词语粗分模型》中做了比较详细的介绍。该算法算法基本思想很简单&#xff0c;就是给定一待处理字串&#xff0c;根据词典&#xff0c;找出词典中所有…

shipyard-----------docker容器的可视化管理

shipyard是什么&#xff0c;由题目就可知&#xff0c;是一个对docker进行管理的可视化界面 照此步骤就能完成对shipyard搭建 <ip-of-host>内容要修改成你的docker0的IP地址&#xff0c;不知道的话就ifconfig就好了 如果搭建不成功则是防火墙未开放4001端口&#xff1a;su…

Eclipse对Java(TM)8的官方支持

Java开发工具&#xff08;JDT&#xff09;项目的项目负责人Dani Megert今天早些时候宣布了此声明 &#xff1a; Eclipse顶级项目非常自豪地宣布正式支持Java™8。从I20140318-0830开始&#xff0c;所有的Luna&#xff08;4.4&#xff09;构建都包含Eclipse对Java™8的支持。对…

Quartz.net使用笔记

一、需求场景&#xff1a;每天固定时间执行某个行为/动作。 一开始想用定时器&#xff0c;后来无意间发现了这个插件&#xff0c;感觉功能太强大了&#xff0c;完美解决了我的问题。 二、下载地址&#xff1a;https://www.quartz-scheduler.net/ 也可以在项目中直接使用nugut进…

将Java 8支持添加到Eclipse Kepler

是否想向开普勒添加Java 8支持&#xff1f; Java 8尚未加入我们的标准下载包中 。 但是您可以将其添加到现有的Eclipse Kepler软件包中。 我有运行Java 8的三种不同的Eclipse安装&#xff1a; 面向Java开发人员的Eclipse IDE的全新Kepler SR2安装&#xff1b; 为RCP / RAP开…

linux网络唤醒,如何在Ubuntu Server 18.04中启用网络唤醒(WOL)

网络唤醒(WOL)是一种行业标准协议&#xff0c;用于远程唤醒服务器。如果您管理着很多设备&#xff0c;因此不需要为了唤醒服务器而去数据中心。启用允许您远程执行此操作的功能&#xff0c;这样您可以更高效地工作。Ubuntu 系统默认没有启用WOL&#xff0c;所以我们要设置它。我…

ActiveMQ –经纪人网络解释

目的 这个由7部分组成的博客系列将分享有关如何创建ActiveMQ代理网络以实现高可用性和可伸缩性的信息。 为什么要建立经纪人网络&#xff1f; ActiveMQ消息代理是企业中消息传递基础结构的核心组件。 它需要高度可用并且可以动态伸缩&#xff0c;以促进具有不同容量需求的动态…

13 创建高级联结

13.1 使用表别名 在之前的例子中&#xff0c;我们用的都是用的列别名&#xff0c;SQL还允许给表名起别名。 13.2 使用不同类型的联结 我们在上一章使用的只是称为内部联结或等值联结&#xff08; equijoin&#xff09; 的简单联结&#xff0c;现在来看3种其他联结&#xff0c;…

正则表达式验证问题(用户名、密码、email、身份证

实现的代码如下&#xff1a; 1 <html>2 <head>3 <meta charset"UTF-8">4 </head>5 <body>6 <p>用户名正则表达式 &#xff0c;4到16位&#xff08;字母&#xff0c;数字&#xff0c;下滑线&#xff0c;减号&#xff09;</p&g…

DevExpress WPF v18.2新版亮点(五)

买 DevExpress Universal Subscription 免费赠 万元汉化资源包1套&#xff01; 限量15套&#xff01;先到先得&#xff0c;送完即止&#xff01;立即抢购>> 行业领先的.NET界面控件2018年第二次重大更新——DevExpress v18.2日前正式发布&#xff0c;本站将以连载的形式…

爬虫521错误(又是一次和可爱的前端vs的故事)

起因: 今天突然想重构一下代理池,并且想扩充一下代理,所以就想着爬点代理IP,然后就有了下面的故事 一上来先进行了一顿操作: def get_xxdaili(url):headers {User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safar…