]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsTransferNewExecution.java
Use durable subscribers
[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.msg.MsgConstants;
8 import org.argeo.slc.msg.MsgHandler;
9 import org.argeo.slc.process.SlcExecution;
10 import org.argeo.slc.runtime.SlcAgent;
11 import org.argeo.slc.runtime.SlcAgentFactory;
12 import org.springframework.jms.support.converter.MessageConverter;
13
14 /** Temporary hack */
15 public class JmsTransferNewExecution implements MessageListener {
16 private MessageConverter messageConverter;
17 private SlcAgentFactory agentFactory;
18 private MsgHandler serviceMsgHandler;
19
20 public void onMessage(final Message message) {
21 try {
22 String agentId = message
23 .getStringProperty(MsgConstants.PROPERTY_SLC_AGENT_ID);
24 final SlcAgent agent = agentFactory.getAgent(agentId);
25 final SlcExecution slcExecution = (SlcExecution) messageConverter
26 .fromMessage(message);
27 new Thread() {
28 public void run() {
29 agent.runSlcExecution(slcExecution);
30 }
31 }.start();
32 serviceMsgHandler.handleMsg(slcExecution);
33 } catch (Exception e) {
34 throw new SlcException("Could not transfer new execution "
35 + message, e);
36 }
37 }
38
39 public void setMessageConverter(MessageConverter messageConverter) {
40 this.messageConverter = messageConverter;
41 }
42
43 public void setAgentFactory(SlcAgentFactory agentFactory) {
44 this.agentFactory = agentFactory;
45 }
46
47 public void setServiceMsgHandler(MsgHandler serviceMsgHandler) {
48 this.serviceMsgHandler = serviceMsgHandler;
49 }
50
51 }