如何设置预定任务?

时间:2012-05-23 15:33:54

标签: task wso2

在此之前我问了一个问题。我的服务是:

<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="UnpayBilling_Task"
       transports="https,http"
       statistics="disable"
       trace="disable"
       startOnLoad="true">
   <target>
      <inSequence>
         <class name="com.coship.mediator.UnpayBillingMediator"></class>
         <log level="full" />
      </inSequence>
      <outSequence>
         <log level="full" />
         <send />
      </outSequence>
      <endpoint>
         <address uri="http://172.21.13.153:18080/aaa/services/receiveMsg" />
      </endpoint>
   </target>
</proxy>

我写了一个扩展中介UnpayBillingMediator交易文件。该类返回文件名并将请求发送到服务http://172.21.13.153:18080/aaa/services/receiveMsg。服务没有输入消息。我希望服务每天13:30运行。我尝试添加新计划任务。 soapAction:urn:mediate,to:http://localhost:8280/services/UnpayBilling?wsdl, Cron: 30 13 * * *.但它不起作用?任何人都可以告诉我如何设置此计划任务?

SimpleQuartz Server name not in pinned servers list. Not starting Task

我也不知道如何设置“固定服务器”。

3 个答案:

答案 0 :(得分:1)

让我解释默认消息注入器任务如何在WSO2 ESB中工作。

它基本上创建具有给定属性的消息(例如:消息有效负载,地址等),并在配置的时间间隔内将其注入主序列。

因此,在您的情况下,您必须更改主序列,以便过滤来自给定To地址或特定邮件正文的邮件并将其发送。

最简单的方法是更改​​WSO2ESB主序列中的默认过滤器,以便过滤您的地址并将其发送到后端服务。

例如:将过滤器更改为:

<filter xmlns:ns="http://org.apache.synapse/xsd
        xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"
        xmlns:ns3="http://org.apache.synapse/xsd"
        source="get-property('To')"
        regex="http://localhost:8280/services/UnpayBilling.*" >
        ...

答案 1 :(得分:1)

请查看以下ESB配置

其中有一个名为Test的代理和一个名为MyTask的任务,当MyTask向主序列注入消息时,我们过滤“To”属性,如果它是我们从Task设置的值,那么我们将它发送给代理服务。

配置:

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://ws.apache.org/ns/synapse">
    <registry provider="org.wso2.carbon.mediation.registry.WSO2Registry">
        <parameter name="cachableDuration">15000</parameter>
    </registry>
    <proxy name="Test" transports="https http" startOnLoad="true" trace="disable">
        <target>
            <inSequence>
                <log level="full">
                    <property name="IN" value="IN"/>
                </log>
                <drop/>
            </inSequence>
        </target>
    </proxy>
    <sequence name="fault">
        <log level="full">
            <property name="MESSAGE" value="Executing default 'fault' sequence"/>
            <property xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:ns="http://org.apache.synapse/xsd" xmlns:ns3="http://org.apache.synapse/xsd" name="ERROR_CODE" expression="get-property('ERROR_CODE')"/>
            <property xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:ns="http://org.apache.synapse/xsd" xmlns:ns3="http://org.apache.synapse/xsd" name="ERROR_MESSAGE" expression="get-property('ERROR_MESSAGE')"/>
        </log>
        <drop/>
    </sequence>
    <sequence name="main">
        <in>
            <filter xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:ns="http://org.apache.synapse/xsd" xmlns:ns3="http://org.apache.synapse/xsd" source="get-property('To')" regex="http://localhost:8280/services/Test">
                <then>
                    <send>
                        <endpoint>
                            <address uri="http://localhost:8280/services/Test"/>
                        </endpoint>
                    </send>
                </then>
                <else/>
            </filter>
        </in>
        <out>
            <drop/>
        </out>
        <description>The main sequence for the message mediation</description>
    </sequence>
    <task name="MyTask" class="org.apache.synapse.startup.tasks.MessageInjector" group="synapse.simple.quartz">
        <trigger count="1" interval="4"/>
        <property xmlns:task="http://www.wso2.org/products/wso2commons/tasks" name="to" value="http://localhost:8280/services/Test"/>
        <property xmlns:task="http://www.wso2.org/products/wso2commons/tasks" name="message">
            <msg xmlns="">FROM_TASK</msg>
        </property>
    </task>
</definitions>

答案 2 :(得分:1)