日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

亚马逊Simple Worklfow服务的骆驼演示

發布時間:2023/12/3 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 亚马逊Simple Worklfow服务的骆驼演示 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在上一篇文章中,我解釋了為什么AWS SWF服務很好,并宣布了新的Camel SWF組件。 現在,組件文檔已準備就緒, 這是一個簡單的完全可用的演示。 它包含三個獨立的獨立駱駝路線:
工作流生產者允許我們與工作流進行交互。 它可以啟動新的工作流程執行,查詢其狀態,向正在運行的工作流程發送信號,或者終止并取消它。 在我們的演示中,WorkflowProducer啟動了一條路線,該路線安排了 10個工作流程執行,每個執行都接收一個數字作為參數。

package com.ofbizian.swf.demo;import org.apache.camel.builder.RouteBuilder; import org.apache.camel.main.Main;public class WorkflowProducer {public static String COMMON_OPTIONS ="accessKey=XXX"+ "&secretKey=XXX"+ "&domainName=demo"+ "&workflowList=demo-wlist"+ "&activityList=demo-alist"+ "&version=1.0"+ "&clientConfiguration.endpoint=swf.eu-west-12.amazonaws.com";public static void main(String[] args) throws Exception {Main main = new Main();main.enableHangupSupport();WorkflowProducerRoute route = new WorkflowProducerRoute();main.addRouteBuilder(route);main.run();}static class WorkflowProducerRoute extends RouteBuilder {@Overridepublic void configure() throws Exception {from("timer://workflowProducer?repeatCount=10").setBody(property("CamelTimerCounter")).to("aws-swf://workflow?" + COMMON_OPTIONS + "&eventName=calculator").log("SENT WORKFLOW TASK ${body}");}} }

安排好工作流程執行后,我們需要一個流程來決定下一步的工作。 在Camel中,這是使用工作流使用者完成的。 工作流程使用者代表工作流程邏輯。 啟動后,它將開始輪詢工作流程決策任務并對其進行處理。 除了處理決策任務之外,工作流使用者路由還將接收信號(從工作流生產者發送)或狀態查詢。 工作流使用者的主要目的是安排活動任務以使用活動生產者執行。 實際上,只能從工作流程使用者啟動的線程中安排活動任務。

package com.ofbizian.swf.demo;import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.aws.swf.SWFConstants; import org.apache.camel.main.Main;public class WorkflowConsumer {public static void main(String[] args) throws Exception {Main main = new Main();main.enableHangupSupport();WorkflowConsumerRoute route = new WorkflowConsumerRoute();main.addRouteBuilder(route);main.run();}static class WorkflowConsumerRoute extends RouteBuilder {@Overridepublic void configure() throws Exception {from("aws-swf://workflow?" + WorkflowProducer.COMMON_OPTIONS + "&eventName=calculator").choice().when(header(SWFConstants.ACTION).isEqualTo(SWFConstants.SIGNAL_RECEIVED_ACTION)).log("Signal received ${body}").when(header(SWFConstants.ACTION).isEqualTo(SWFConstants.GET_STATE_ACTION)).log("State asked ${body}").when(header(SWFConstants.ACTION).isEqualTo(SWFConstants.EXECUTE_ACTION)).setBody(simple("${body[0]}")).log("EXECUTION TASK RECEIVED ${body}").filter(simple("${body} > 5")).to("aws-swf://activity?" + WorkflowProducer.COMMON_OPTIONS + "&eventName=incrementor");}}}

我們的演示決策器中的邏輯很簡單:如果傳入的參數大于5,我們將計劃執行任務。 否則,由于沒有其他任務要執行,因此工作流將完成。 請注意,它還具有處理信號和狀態查詢事件的分支。

我們的分布式(因為它包含三個獨立的應用程序)工作流應用程序的最后一個選擇是ActivityConsumer,它實際上執行一些計算。 它具有最簡單的實現:遞增給定參數并返回它。

package com.ofbizian.swf.demo;import org.apache.camel.builder.RouteBuilder; import org.apache.camel.main.Main;public class ActivityConsumer {public static void main(String[] args) throws Exception {Main main = new Main();main.enableHangupSupport();ActivityConsumerRoute route = new ActivityConsumerRoute();main.addRouteBuilder(route);main.run();}static class ActivityConsumerRoute extends RouteBuilder {@Overridepublic void configure() throws Exception { from("aws-swf://activity?" + WorkflowProducer.COMMON_OPTIONS + "&eventName=incrementor").setBody(simple("${body[0]}")).log("RECEIVED ACTIVITY TASK ${body}").setBody(simple("${body}++"));}} }

運行此演示所需要做的只是創建適當的工作流域并將密鑰/秘密添加到路由中。

參考:來自OFBIZian博客的JCG合作伙伴 Bilgin Ibryam提供的有關Amazon Simple Worklfow服務的駱駝演示 。

翻譯自: https://www.javacodegeeks.com/2014/01/a-camel-demo-for-amazons-simple-worklfow-service.html

總結

以上是生活随笔為你收集整理的亚马逊Simple Worklfow服务的骆驼演示的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。