阿里云网站建设和部署框架,虚拟主机和服务器有什么区别,网站建设更新不及时 整改报告,网络营销产品推广方案带有SNS-SQS的管道 工作流由按动态条件确定的特定顺序执行的独立任务组成。 工作流通常代表业务流程#xff0c;例如电子商务商店中的订单处理步骤。 Amazon Web Services提供了各种工具来构建分布式和可扩展的工作流应用程序。 构建此类应用程序的一种方法是使用主题和队列来… 带有SNS-SQS的管道 工作流由按动态条件确定的特定顺序执行的独立任务组成。 工作流通常代表业务流程例如电子商务商店中的订单处理步骤。 Amazon Web Services提供了各种工具来构建分布式和可扩展的工作流应用程序。 构建此类应用程序的一种方法是使用主题和队列来连接工作流程中的不同步骤。 然后我们可以使用发布/订阅竞争的使用者和其他机制来扩展我们的应用程序甚至最简单的应用程序都将具有类似于以下内容的形状 流水线的每个步骤都通过队列连接到下一个步骤并且每个步骤执行一些操作并决定下一步是什么。 此外使用SNS / SQS还涉及其他一些底层任务 –序列化/反序列化数据 –确保SQSmessages的一致性FIFO顺序 –确保不超过消息大小 –发明某种审计支持 –订户排队到主题分配权限 –管理DLQ 最后它可以工作但是克服这些技术挑战所需的时间与编写可提供业务价值的实际代码所花费的时间一样多。 简单的工作流程服务 另一方面SWF提供了用于编写分布式异步工作流应用程序的更高级别的API。 它会自动对数据进行序列化/反序列化管理应用程序状态提供可审核性确保强一致性支持多个版本。 最重要的是它确保工作流程编排和业务逻辑执行分开。 任何典型的SWF应用程序都具有以下构造块 用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?domainNamedemoworkflowListdemo-flowversion1.0eventNameprocessWorkflows); 工作流使用者是决定者。 它从SWF服务接收决策任务并计划执行活动任务或指示工作流执行已完成。 这是一条无状态的确定性路线只有工作才能安排任务 from(aws-swf://workflow?domainNamedemoworkflowListdemo-flowversion1.0eventNameprocessWorkflows).log(Received a workflow task ${body}).filter(header(SWFConstants.ACTION).isEqualTo(SWFConstants.EXECUTE_ACTION)).to(aws-swf://activity?domainNamedemoactivityListdemo-activityversion1.0eventNameprocessActivities); 活动端点允许我们与活动任务进行交互。 活动生产者用于安排活动任务并且只能在决策者路线实际上是决策者线程中使用。 这是因为只有决策者才能安排活动任务。 我们图中必须提供实现的最后一个框是活动工作程序可以使用活动使用者来创建活动工作程序。 该端点将从SWF接收活动任务执行任务并将结果返回给SWF。 这是实际执行业务逻辑的部分 from(aws-swf://activity?domainNamedemoactivityListdemo-activityversion1.0eventNameprocessActivities).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