package org.openstack.atlas.api.mgmt.integration; import org.openstack.atlas.service.domain.management.operations.EsbRequest; import org.openstack.atlas.service.domain.operations.Operation; import org.openstack.atlas.service.domain.pojos.MessageDataContainer; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.jms.core.JmsTemplate; import org.springframework.jms.core.MessageCreator; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.Session; public class ManagementAsyncServiceImpl implements ManagementAsyncService { private final Log LOG = LogFactory.getLog(ManagementAsyncServiceImpl.class); private JmsTemplate jmsTemplate; @Override public void callAsyncLoadBalancingOperation(final Operation operation, final EsbRequest esbRequest) throws JMSException { LOG.debug(String.format("Sending message to '%s' queue...", operation.name())); jmsTemplate.send(operation.name(), new MessageCreator() { public Message createMessage(Session session) throws JMSException { return session.createObjectMessage(esbRequest); } }); } @Override public void callAsyncLoadBalancingOperation(Operation operation, final MessageDataContainer dataContainer) throws JMSException { LOG.debug(String.format("Sending message to '%s' queue...", operation.name())); jmsTemplate.send(operation.name(), new MessageCreator() { public Message createMessage(Session session) throws JMSException { return session.createObjectMessage(dataContainer); } }); } public void setJmsTemplate(JmsTemplate jmsTemplate) { this.jmsTemplate = jmsTemplate; } }