亚马逊Simple Worklfow服务的骆驼演示
在上一篇文章中,我解釋了為什么AWS SWF服務很好,并宣布了新的Camel SWF組件。 現在,組件文檔已準備就緒, 這是一個簡單的完全可用的演示。 它包含三個獨立的獨立駱駝路線:
工作流生產者允許我們與工作流進行交互。 它可以啟動新的工作流程執行,查詢其狀態,向正在運行的工作流程發送信號,或者終止并取消它。 在我們的演示中,WorkflowProducer啟動了一條路線,該路線安排了 10個工作流程執行,每個執行都接收一個數字作為參數。
安排好工作流程執行后,我們需要一個流程來決定下一步的工作。 在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}++"));}} } 運行此演示所需要做的只是創建適當的工作流域并將密鑰/秘密添加到路由中。
翻譯自: https://www.javacodegeeks.com/2014/01/a-camel-demo-for-amazons-simple-worklfow-service.html
總結
以上是生活随笔為你收集整理的亚马逊Simple Worklfow服务的骆驼演示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Data MongoDB级
- 下一篇: ddos黑客(DDoS安全组)