活动的单独任务列表 - AWS SWF

时间:2014-09-04 11:14:49

标签: java multithreading web-services amazon-web-services amazon-swf

我有一个用例,我希望系统中有10个工作线程。除此之外,6个工作线程应该轮询到一个任务列表,4个工作线程轮询到另一个任务列表。

我在Flow Framework上以这种方式配置了我的代码。

我的一项活动已注册到其他任务列表。默认任务列表的所有其他活动。我有6个工作线程监听默认任务列表,剩下4个工作线程监听其他任务列表。

然而,当我执行我的工作流程时,我收到错误:

  

任务列表名称:CIMSProposalActivityValidationTList

     

身份:29547@ccs-master-1001.vdc.xyz.com

     

详细信息:[“java.lang.IllegalStateException”,{“cause”:null,“stackTrace”:[{“methodName”:“current”,“fileName”:“AsyncContextBase.java “ ”LINENUMBER“:27, ”的className“: ”com.amazonaws.services.simpleworkflow.flow.core.AsyncContextBase“, ”nativeMethod“:假},{ ”方法名“: ”“, ”文件名“:” AsyncContextBase。的java “ ”LINENUMBER“:49, ”的className“: ”com.amazonaws.services.simpleworkflow.flow.core.AsyncContextBase“, ”nativeMethod“:假},{ ”方法名“: ”“, ”文件名“:” TryCatchFinallyContext的.java “ ”LINENUMBER“:46, ”的className“: ”com.amazonaws.services.simpleworkflow.flow.core.TryCatchFinallyContext“, ”nativeMethod“:假},{ ”方法名“: ”“, ”文件名“:” TryCatchFinally.java”, “LINENUMBER”:233, “的className”: “com.amazonaws.services.simpleworkflow.flow.core.TryCatchFinally”, “nativeMethod”:假},{ “方法名”: “”, “文件名”: “TryCatch.java”, “LINENUMBER”:22, “的className”: “com.amazonaws.services.simpleworkflow.flow.core.TryCatch”, “nativeMethod”:假},{ “方法名”: “”, “文件名” : “GrooveScheduleAspect.java”,“林eNumber “:93,” 类名 “:” com.amazon.transportation.groove.aspectj.GrooveScheduleAspect $ 1" , “nativeMethod”:假},{ “方法名”: “processGrooveSchedule”, “文件名”: “GrooveScheduleAspect.java” “LINENUMBER”:93, “的className”: “com.amazon.transportation.groove.aspectj.GrooveScheduleAspect”, “nativeMethod”:假},{ “方法名”: “验证”, “文件名”: “ValidationActivitiesImpl.java”, “LINENUMBER”:23, “的className”: “com.amazon.cimsworkflow.activities.impl.ValidationActivitiesImpl”, “nativeMethod”:假},{ “方法名”: “invoke0”, “文件名”: “NativeMethodAccessorImpl.java”, “LINENUMBER”: - 2 “的className”: “sun.reflect.NativeMethodAccessorImpl”, “nativeMethod”:真},{ “方法名”: “调用”, “文件名”: “NativeMethodAccessorImpl.java”, “LINENUMBER”:57 “类名”: “sun.reflect.NativeMethodAccessorImpl”, “nativeMethod”:假},{ “方法名”: “调用”, “文件名”: “DelegatingMethodAccessorImpl.java”, “LINENUMBER”:43, “的className”:” sun.reflect.DelegatingMethodAccessorImpl “ ”nativeMethod“:假},{ ”方法名“: ”调用“, ”文件名“:” 甲基od.java”, “LINENUMBER”:606, “的className”: “java.lang.reflect.Method中”, “nativeMethod”:假},{ “方法名”: “执行”, “文件名”: “POJOActivityImplementation.java” “LINENUMBER”:63, “的className”: “com.amazonaws.services.simpleworkflow.flow.pojo.POJOActivityImplementation”, “nativeMethod”:假},{ “方法名”: “执行”, “文件名”:“ActivityImplementationBase。的java “ ”LINENUMBER“:46, ”的className“: ”com.amazonaws.services.simpleworkflow.flow.generic.ActivityImplementationBase“, ”nativeMethod“:假},{ ”方法名“: ”执行“, ”文件名“:” SynchronousActivityTaskPoller.java”, “行号”:196, “类名”: “com.amazonaws.services.simpleworkflow.flow.worker.SynchronousActivityTaskPoller”, “nativeMethod”:假},{ “方法名”: “运行”, “文件名” : “ActivityTaskPoller.java”, “LINENUMBER”:97 “的className”: “com.amazonaws.services.simpleworkflow.flow.worker.ActivityTaskPoller $ 1”, “nativeMethod”:假},{ “方法名”: “runWorker”, “文件名”: “ThreadPoolExecutor.java”, “行号”:1145, “类名”:“java.util.concurrent.ThreadPoolExecutor中”, “nativeMethod”:假},{ “方法名”: “运行”, “文件名”: “ThreadPoolExecutor.java”, “行号”:615, “类名”: “java.util.concurrent.ThreadPoolExecutor中的$工作者”, “nativeMethod”:假},{ “方法名”: “运行”, “文件名”: “Thread.java”, “LINENUMBER”:744, “的className”: “java.lang.Thread中”, “nativeMethod”:假} ], “消息”:“尝试   在AsyncScope.doAsync()之外执行异步代码   method“,”localizedMessage“:”尝试执行异步代码   在AsyncScope.doAsync()之外   法”, “抑制”:[ “[Ljava.lang.Throwable;”,[]]}]

原因

  
      
  • 尝试在AsyncScope.doAsync()方法之外执行异步代码
  •   

我的任务列表是我创建的新任务列表。线程也是预期的。但是我收到了这个错误。如何解决这个问题的任何线索。请回复

2 个答案:

答案 0 :(得分:1)

AWS Flow Framework活动实现不能包含任何异步代码。所有这些代码仅在工作流实现中允许。从堆栈跟踪看起来,您的活动实现确实引用了TryCatch类,它只能用于异步错误处理。

答案 1 :(得分:-1)

不同的活动不能具有相同的任务列表名称。每个活动需要不同的任务列表名称。 如果您希望相同的活动轮询多个任务列表,则运行相同活动的多个实例,并使每个实例轮询不同的任务列表。