我希望每次收到消息时(在调解期间)都会有一个序列启动任务。例如:
<sequence xmlns="http://ws.apache.org/ns/synapse" name="main">
<in>
**<task>
<SOME_TASK_DETAILS_TO_START_OFF>
</task>**
</in>
<out>
<send></send>
</out>
<description>The main sequence for the message mediation</description>
</sequence>
这实际上可行吗?我发现的所有文档似乎都与启动ESB或通过Web控制台手动启动的任务有关。
谢谢!
答案 0 :(得分:1)
在inSequence中添加此脚本:
<script language="js">importPackage(Packages.org.apache.synapse);
importPackage(Packages.org.apache.synapse.config);
importPackage(Packages.org.apache.synapse.task);
var sc = mc.getConfiguration();
var task = sc.getStartup("TestTask");
var td = task.getTaskDescription()
td.setCount(0);
//td.setCron(null);
task.setTaskDescription(td);
sc.updateStartup(task);
mc.setConfiguration(sc);
task.destroy();
task.init(mc.getEnvironment());</script>
如果你的任务有一个Cron表达式,td.setCount(0),任务执行停止,并且td.setCount(-1),任务执行重启。
使用td.setCount(1)+ td.setCron(null),在ESB控制台中编辑任务时,您可以观察到该定义已更新:触发类型已从&#39; Cron&#39;到&#39;简单&#39; (count = 1且interval = 0)。内存中的定义已更改,并在重新启动ESB时丢失。