]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsTransferNewExecution.java
Make jms more robust
[gpl/argeo-slc.git] / runtime / org.argeo.slc.support.activemq / src / main / java / org / argeo / slc / jms / JmsTransferNewExecution.java
1 package org.argeo.slc.jms;
2
3 import javax.jms.Message;
4 import javax.jms.MessageListener;
5
6 import org.argeo.slc.SlcException;
7 import org.argeo.slc.process.SlcExecution;
8 import org.argeo.slc.runtime.SlcAgent;
9 import org.argeo.slc.runtime.SlcAgentFactory;
10 import org.springframework.jms.support.converter.MessageConverter;
11
12 /** Temporary hack */
13 public class JmsTransferNewExecution implements MessageListener {
14 private MessageConverter messageConverter;
15 private SlcAgentFactory agentFactory;
16
17 public void onMessage(final Message message) {
18 try {
19 String agentId = message
20 .getStringProperty(JmsAgent.PROPERTY_SLC_AGENT_ID);
21 final SlcAgent agent = agentFactory.getAgent(agentId);
22 final SlcExecution slcExecution = (SlcExecution) messageConverter
23 .fromMessage(message);
24 new Thread() {
25 public void run() {
26 agent.runSlcExecution(slcExecution);
27 }
28 }.start();
29 } catch (Exception e) {
30 throw new SlcException("Could not transfer new execution "
31 + message, e);
32 }
33 }
34
35 public void setMessageConverter(MessageConverter messageConverter) {
36 this.messageConverter = messageConverter;
37 }
38
39 public void setAgentFactory(SlcAgentFactory agentFactory) {
40 this.agentFactory = agentFactory;
41 }
42
43 }