Package org.hoteia.qalingo.core.jms.geoloc.listener

Source Code of org.hoteia.qalingo.core.jms.geoloc.listener.AddressGeolocQueueListener

/**
* Most of the code in the Qalingo project is copyrighted Hoteia and licensed
* under the Apache License Version 2.0 (release version 0.8.0)
*         http://www.apache.org/licenses/LICENSE-2.0
*
*                   Copyright (c) Hoteia, 2012-2014
* http://www.hoteia.com - http://twitter.com/hoteia - contact@hoteia.com
*
*/
package org.hoteia.qalingo.core.jms.geoloc.listener;

import java.beans.ExceptionListener;
import java.io.IOException;
import java.util.Date;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hoteia.qalingo.core.jms.geoloc.producer.AddressGeolocMessageJms;
import org.hoteia.qalingo.core.mapper.XmlMapper;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.JobParametersBuilder;
import org.springframework.batch.core.JobParametersInvalidException;
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.batch.core.repository.JobExecutionAlreadyRunningException;
import org.springframework.batch.core.repository.JobInstanceAlreadyCompleteException;
import org.springframework.batch.core.repository.JobRestartException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component(value = "addressGeolocMessageProducer")
public class AddressGeolocQueueListener implements MessageListener, ExceptionListener {

    protected final Log logger = LogFactory.getLog(getClass());

    @Autowired
    protected JobLauncher jobLauncher;
   
    @Autowired
    protected Job gelocJob;
   
    @Autowired
    protected XmlMapper xmlMapper;
   
    /**
     * Implementation of <code>MessageListener</code>.
     */
    public void onMessage(Message message) {
        try {
            if (message instanceof TextMessage) {
                TextMessage tm = (TextMessage) message;
                String valueJMSMessage = tm.getText();

                if (logger.isDebugEnabled()) {
                    logger.debug("Processed message, value: " + valueJMSMessage);
                }

                if(StringUtils.isNotEmpty(valueJMSMessage)){
                    final AddressGeolocMessageJms addressGeolocMessageJms = xmlMapper.getXmlMapper().readValue(valueJMSMessage, AddressGeolocMessageJms.class);
                   
                    // TRIGGER A BATCH TO PROCESS THE EMAIL
                    if (logger.isDebugEnabled()) {
                        logger.debug("Trigger a new job for a new email, type: " + addressGeolocMessageJms.getGeolocType());
                    }

                    JobParametersBuilder jobParametersBuilder = new JobParametersBuilder();
                    jobParametersBuilder.addDate("date", new Date());
                    JobParameters params = jobParametersBuilder.toJobParameters();
                    jobLauncher.run(gelocJob, params);
                }
            }
           
        } catch (JMSException e) {
            logger.error(e.getMessage(), e);
        } catch (IOException e) {
            logger.error(e.getMessage(), e);
        } catch (JobExecutionAlreadyRunningException e) {
            logger.error(e.getMessage(), e);
        } catch (JobRestartException e) {
            logger.error(e.getMessage(), e);
        } catch (JobInstanceAlreadyCompleteException e) {
            logger.error(e.getMessage(), e);
        } catch (JobParametersInvalidException e) {
            logger.error(e.getMessage(), e);
        }
    }

    @Override
    public void exceptionThrown(Exception e) {
        logger.debug("Exception on queue listener: " + e.getCause() + ":" + e.getLocalizedMessage());
    }

}
TOP

Related Classes of org.hoteia.qalingo.core.jms.geoloc.listener.AddressGeolocQueueListener

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.