分布式事务 camel_使用Camel在Amazon上构建分布式工作流应用程序

分布式事务 camel

带有SNS-SQS的管道
工作流由以动态条件确定的特定顺序执行的独立任务组成。 工作流通常代表业务流程,例如电子商务商店中的订单处理步骤。
Amazon Web Services提供了用于构建分布式和可伸缩工作流应用程序的各种工具。 构建此类应用程序的一种方法是使用主题和队列来连接工作流程中的不同步骤。 然后,我们可以使用发布/订阅,竞争的使用者和其他机制来扩展我们的应用程序,甚至最简单的应用程序都将具有类似于以下内容的形状:

AWS SNS-SQS-支持流程(2)
流水线的每个步骤都通过队列连接到下一个步骤,每个步骤执行一些操作并决定下一步是什么。 此外,使用SNS / SQS还涉及其他一些底层任务:
–序列化/反序列化数据 –确保SQSmessages的一致性(FIFO顺序) –确保不超过消息大小 –发明某种审计支持 –订户排队到主题,分配权限 –管理DLQ 最后,它可以工作,但是克服这些技术挑战所需的时间与编写可提供业务价值的实际代码一样多。

简单的工作流程服务
另一方面,SWF提供了用于编写分布式异步工作流应用程序的更高级别的API。 它会自动对数据进行序列化/反序列化,管理应用程序状态,提供可审核性,确保强一致性,支持多个版本。 最重要的是,它确保工作流程编排和业务逻辑执行分开。 任何典型的SWF应用程序都具有以下构造块:

AWS SWF-支持流程(3)
用SWF术语来说,工作流是实际的模板,描述了流程应遵循的不同步骤。 工作流执行是此模板的运行。
Starter –可以启动,停止工作流程并与其交互的过程。 决策者 –协调和决定工作流程执行下一步的过程。 工作者 –执行特定类型任务的过程。 SWF控制台 –提供完整的可见性和执行控制权。 工作流执行示例可以通过以下步骤进行:启动程序启动工作流执行,SWF接收该工作流,询问决策者下一步是什么,然后根据该决定将任务传递给适当的活动工作者。 收到来自活动工作程序的结果后,SWF再次要求决策者进行下一步,并且取决于响应是否可以执行其他工作程序。 该流程一直持续到决策者答复工作流完成为止。 您可以看到决策者如何协调工作流的每个步骤以及活动工作人员如何执行各个任务。 所有这些都由SWF管理,并且可以在任何阶段进行审核。

为什么要使用骆驼?
亚马逊提供的Java客户端通过使用注释生成代理类来访问SWF服务来工作。 生成和使用代理类的整个过程以及从启动者到决策者以及从决策者到活动工作者的依赖关系都不是一件很愉快的事情。 还有什么比使用骆驼路线进行编排和使用另一条路线进行实际活动更好的呢? 结果是现在在Camel master中的Camel SWF组件。 Camel-swf组件具有两种类型的端点: 工作流活动
工作流生产者允许我们启动,终止,取消,发信号,获取状态或检索工作流执行的整个执行历史。 在我们的图中,它表示启动器。 这是如何开始执行工作流程的示例:

from("direct:start").setHeader(SWFConstants.OPERATION, constant("START")).log("Starting a workflow task ${body}").to("aws-swf://workflow?domainName=demo&workflowList=demo-flow&version=1.0&eventName=processWorkflows");

工作流使用者是决定者。 它从SWF服务接收决策任务,并计划执行活动任务或指示工作流执行已完成。 这是一条无状态的确定性路线,只有工作才能安排任务:

from("aws-swf://workflow?domainName=demo&workflowList=demo-flow&version=1.0&eventName=processWorkflows").log("Received a workflow task ${body}").filter(header(SWFConstants.ACTION).isEqualTo(SWFConstants.EXECUTE_ACTION)).to("aws-swf://activity?domainName=demo&activityList=demo-activity&version=1.0&eventName=processActivities");

活动端点使我们能够与活动任务进行交互。 活动生产者用于安排活动任务,并且只能在决策者路线(实际上是决策者线程)中使用。 这是因为只有决策者才能安排活动任务。 我们图中必须提供实现的最后一个框是活动工作程序,可以使用活动使用者来创建活动工作程序。 该端点将接收来自SWF的活动任务,执行任务并将结果返回给SWF。 这是实际执行业务逻辑的部分:

from("aws-swf://activity?domainName=demo&activityList=demo-activity&version=1.0&eventName=processActivities").log("Received Activity task ${body}").setBody(constant("1"));

因此,任何SWF应用程序都由启动执行程序的启动程序(工作流生产者),接收决策任务并计划活动任务的决策者(工作消费者)(使用活动生产者)和执行任务的活动工作者(活动消费者)组成。 这些端点之间的通信是异步的,一致的,并且由SWF服务进行管理。

它不是最容易使用的组件,但是它具有简单且可扩展的体系结构。 PS:感谢我的前经理S. Wheeler让我将此组件贡献给Camel社区。

参考:来自OFBIZian博客的JCG合作伙伴 Bilgin Ibryam 使用Camel在Amazon上构建分布式工作流应用程序 。

翻译自: https://www.javacodegeeks.com/2013/12/building-distributed-workflow-applications-on-amazon-with-camel.html

分布式事务 camel

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

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

相关文章

php登陆框_PHP 登录完成跳转上一访问页面

需求描述:访问网站页面时,有的页面需要授权才能访问,这时候就会要求用户登录,跳转到登录页面login.php,怎么实现登录后返回到刚才访问的页面。解决思路1:在跳转到登录页面之前要将当前访问页面的url保存到c…

比较Java REST文档框架

确定在记录REST API时选择哪种Java框架可能很麻烦。 在本博文中,我们将简要比较我们自己使用的REST Web服务的三种文档框架,以及它们如何与Spring框架(这是Foreach最常使用的Java框架)集成。 这些是RESTful API建模语言&#xff0…

php 获取文件最后几行,php获取文件的最后N行数据

本篇文章介绍的内容是php获取文件的最后N行数据,现在分享给大家,也可以给有需要的朋友一个参考GitHub源码代码是基于以下问题,给出的解决方案:用php写一个函数,获取一个文本文件最后$n行内容,要求尽可能效率…

jaVa游戏三国志英杰传,《三国志英杰传》到底是怎样的一款游戏

原标题:《三国志英杰传》到底是怎样的一款游戏介绍作为PC平台上经典的战棋策略类游戏,英杰传系列可谓把这一类型游戏在战略性和资源获取上的精髓发挥的淋漓尽致。系列初代的《三国志英杰传》诞生在1995年的DOS系统上,虽然我接触英杰传时已经是…

jvm 内存镜像_镜像镜像–使用反射在运行时查看JVM内部

jvm 内存镜像开发人员:Takipi会告诉您何时新代码在生产中中断– 了解更多 我们都习惯于在我们的日常工作中直接或通过利用反射的框架来运用反射。 它是Java和Scala编程的主要方面,它使我们使用的库可以与我们的代码进行交互,而无需对其进行硬…

【渝粤题库】广东开放大学 微信平台开发与应用 形成性考核 (2)

选择题 题目: 以下哪些功能是属于微信的? 题目: 认证过的订阅号的底部是否可以直接链接到外部链接? 题目: 下面哪些属于页面前端开发技术? 题目: 那种情况下的公众号可以申请微信支付&#xff1…

php微信小程序获取用户信息,微信小程序获取openid及用户信息的方法

本文主要介绍微信小程序如何获取openid及用户信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。1. 获取openid1.1 获取code调用接口获取登录凭证(code)进而换取用户登录态信息,包括用户的唯一标识(openid…

【渝粤题库】广东开放大学 服务标准化 形成性考核

​👉关注我,看答案👈 选择题 题目:以下关于本课程终考的描述正确的是? 题目:以下哪种方式能判断已发布的形考是否都做了? 题目:作为专业方向课,本课程最后的总成绩应该达到多少才不影…

谁去过顽皮,谁去过尼斯? 圣诞老人为您提供Java 11建议!

有没有想过圣诞老人如何为世界各地的孩子们送上节日礼物? 有20亿个孩子,每个孩子都有自己的愿望清单,他会在24小时内完成。 这意味着每个孩子平均需要43微秒,他需要检查每个孩子是否顽皮或好。 您无需再怀疑了。 我会透露这个秘密…

php时间格式函数,PHP函数之日期时间函数date()使用详解_php基础_脚本

$ttime();echo date("Y-m-d H:i:s",$t);第一个参数的格式分别表示:a - "am" 或是 "pm"A - "AM" 或是 "PM"d - 几日,二位数字,若不足二位则前面补零; 如: "01" 至 "31"D - 星期几…

【渝粤题库】广东开放大学 物业财税管理基础 形成性考核

选择题 题目:企业将资金以购买债券、提供借款或商业信用等形式出借给其他单位,这是一种( )的财务关系。 题目:( )是指买卖双方成交后,在双方约定的未来某一特定的时日才交割的交易市…

【渝粤题库】广东开放大学 统计基础 形成性考核

选择题 题目: 对某城市工业企业未安装设备进行普查,总体单位是( )。 选择一项: 题目: 某地"国内生产总值”这一统计指标属于( )。 选择一项: 题目&…

java无符号 uuid,java实现无符号数转换、字符串补齐、md5、uuid、随机数示例

package com.hongyuan.test;import java.security.messagedigest;import java.security.nosuchalgorithmexception;import java.util.random;import java.util.uuid;/** 杂项(无符号数转换,字符串补齐,md5,uuid,随机数)*/public class sundrytest {//转成…

【渝粤题库】广东开放大学 质量管理 形成性考核

​👉关注我,看答案👈 选择题 题目:可以通过哪些形式登陆学校的课程平台进行学习? 题目:以下关于课程勋章的说法,哪些是“正确”的? 题目:在“疑难解答区”发帖时,哪种类型…

play框架配置 拦截器_如何使用Play框架为https配置SSL证书

play框架配置 拦截器我花了几个小时试图使它起作用,最后,问题是我自己没有使用keytool生成CSR(证书请求)。 当我尝试通过https访问Play时,我一直收到此错误: javax.net.ssl.SSLPeerUnverifiedException&a…

【渝粤题库】陕西师范大学100141大学英语(三)作业 (专升本、高起本)

交际与对话 针对每个对话中未完成的部分有4个选项,请从A、B、C、D四个选项中选出正确选项。 a. What do you think of the speech given by Professor Smith? b. . But I’m not particularly interested in the topic. A. Let me think about it. B. Not bad. C.…

webmin升级php,Webmin php-lib.pl修改

我已经将PHP版本更新到5.5.26。使用PHP 5.4,我使用FCGI的Apache配置是:AddHandler fcgid-script .phpAddHandler fcgid-script .php5使用新版本的PHP我需要把其他配置工作:SetHandler fcgid-script没关系,它的工作。我的问题是与W…

【渝粤题库】陕西师范大学151211 税法与纳税会计 作业(专升本)

《税务与纳税会计》作业 一、单选题 以下关于纳税主体的表述中正确的是( )。 A. 纳税会计纳税主体和财务会计中的“会计主体”相同 B. 会计主体都是纳税主体 C. 纳税主体不一定是会计主体 D. 纳税主体一定是会计主体 下列项目中属于纳税人权利的是&…

java代码上传exel,excle上传服务器并解析!求excel上传到服务器的java代码

如何将数据上传给服务器医嘱以形式发送过来? 办法有很多,最简单的,就是在机器里,建立2个数据库A,B,假如A是外务器。 在数据库中,以A数据库做发布,让B数据库订阅,弄好以后&#xff0c…

Java中的Fork / Join框架的简要概述

Fork / Join框架是使用并发分治法解决问题的框架。 引入它们是为了补充现有的并发API。 在介绍它们之前,现有的ExecutorService实现是运行异步任务的流行选择,但是当任务同质且独立时,它们会发挥最佳作用。 运行依赖的任务并使用这些实现来组…