WSO2 Integration Studio调度无输入负载代理任务报错解决
解决WSO2 MessageInjector任务无负载调用代理的报错问题
报错ERROR {MessageInjector} - message or registry-key not set的原因是MessageInjector强制要求必须配置message或registry-key属性,空字符串不被视为有效配置——哪怕你的代理不需要输入负载。
无需编写自定义Tasks接口类,用以下两种方案即可解决:
方案1:配置空的有效XML作为message值
给message属性设置一个合法的空XML结构(比如空SOAP信封),代理会忽略这个空负载,不影响逻辑执行。修改后的任务代码如下:
<?xml version="1.0" encoding="UTF-8"?> <task class="org.apache.synapse.startup.tasks.MessageInjector" group="synapse.simple.quartz" name="ScheduleOrderCreation" xmlns="http://ws.apache.org/ns/synapse"> <trigger count="2" interval="5"/> <property xmlns:task="http://www.wso2.org/products/wso2commons/tasks" value="<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'></soapenv:Envelope>" name="message"/> <property xmlns:task="http://www.wso2.org/products/wso2commons/tasks" name="proxyName" value="CreateOrders"/> <property xmlns:task="http://www.wso2.org/products/wso2commons/tasks" name="injectTo" value="proxy"/> </task>
方案2:通过注册表引用空资源
在WSO2注册表中创建一个空的XML文件(比如/_system/config/empty_payload.xml),然后用registry-key属性代替message:
<?xml version="1.0" encoding="UTF-8"?> <task class="org.apache.synapse.startup.tasks.MessageInjector" group="synapse.simple.quartz" name="ScheduleOrderCreation" xmlns="http://ws.apache.org/ns/synapse"> <trigger count="2" interval="5"/> <property xmlns:task="http://www.wso2.org/products/wso2commons/tasks" name="registry-key" value="/_system/config/empty_payload.xml"/> <property xmlns:task="http://www.wso2.org/products/wso2commons/tasks" name="proxyName" value="CreateOrders"/> <property xmlns:task="http://www.wso2.org/products/wso2commons/tasks" name="injectTo" value="proxy"/> </task>
两种方案都能满足无负载调用代理的需求,方案1更直接,无需额外配置注册表。
内容的提问来源于stack exchange,提问作者Ruby
相关产品推荐
相关产品推荐

