Search code examples
javamulemule-flow

How to run a query every 2 minutes in mule using quartz


I want to execute my query every 2 minutes, but I get following error.

--------------------------------------------------------------------------------
Exception stack is:
1. No serializer found for class org.mule.transport.NullPayload and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS) ) (org.codehaus.jackson.map.JsonMappingException)
  org.codehaus.jackson.map.ser.impl.UnknownSerializer:52 (null)
2. No serializer found for class org.mule.transport.NullPayload and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS) ) (org.codehaus.jackson.map.JsonMappingException) (org.mule.api.transformer.TransformerException)
  org.mule.module.json.transformers.ObjectToJson:107 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transformer/TransformerException.html)
--------------------------------------------------------------------------------
Root Exception stack trace:
org.codehaus.jackson.map.JsonMappingException: No serializer found for class org.mule.transport.NullPayload and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS) )
    at org.codehaus.jackson.map.ser.impl.UnknownSerializer.failForEmpty(UnknownSerializer.java:52)
    at org.codehaus.jackson.map.ser.impl.UnknownSerializer.serialize(UnknownSerializer.java:25)
    at org.codehaus.jackson.map.ser.StdSerializerProvider._serializeValue(StdSerializerProvider.java:610)
    + 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
********************************************************************************

My flow is as below.

 <flow name="testdbFlow1" doc:name="testdbFlow1">
      
    <quartz:inbound-endpoint responseTimeout="10000" doc:name="Quartz" jobName="CronJobSchedule" repeatInterval="0" cronExpression="0 0/2 * ? * MON-FRI" repeatCount="1">                   
    <quartz:event-generator-job/>
    </quartz:inbound-endpoint>
    <jdbc-ee:outbound-endpoint queryKey="select_qry" queryTimeout="-1"  connector-ref="Database" doc:name="Database"/>
    <json:object-to-json-transformer doc:name="Object to JSON"/>
    <echo-component doc:name="Echo"/> 

</flow>

Solution

  • Try the following by adding quartz:payload :-

    <flow name="testdbFlow1" doc:name="testdbFlow1">
    <quartz:inbound-endpoint responseTimeout="10000" doc:name="Quartz" jobName="CronJobSchedule" repeatInterval="0" cronExpression="0 0/2 * ? * MON-FRI" repeatCount="1">                   
            <quartz:event-generator-job>
    <quartz:payload>quartzSchedular started</quartz:payload>
    </quartz:event-generator-job>
            </quartz:inbound-endpoint>
            <jdbc-ee:outbound-endpoint queryKey="select_qry" queryTimeout="-1"  connector-ref="Database" doc:name="Database"/>
            <json:object-to-json-transformer doc:name="Object to JSON"/>
            <echo-component doc:name="Echo"/> 
    
        </flow>
    

    Update :- use logger after json:object-to-json-transformer like the following :-

    <logger message="#[message.payload]" level="INFO" doc:name="Logger"/>
    

    and remove echo component ...

    and make exchange-pattern="request-response" in JDBC component like the following :-

    <jdbc-ee:outbound-endpoint queryKey="select_qry" queryTimeout="-1"  connector-ref="Database" exchange-pattern="request-response" doc:name="Database"/>