]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsAgent.java
Implementation of DefaultModulesManager.process
[gpl/argeo-slc.git] / runtime / org.argeo.slc.support.activemq / src / main / java / org / argeo / slc / jms / JmsAgent.java
1 package org.argeo.slc.jms;
2
3 import java.net.InetAddress;
4 import java.net.UnknownHostException;
5 import java.util.UUID;
6
7 import javax.jms.Destination;
8
9 import org.apache.commons.logging.Log;
10 import org.apache.commons.logging.LogFactory;
11 import org.argeo.slc.SlcException;
12 import org.argeo.slc.core.runtime.AbstractAgent;
13 import org.argeo.slc.process.SlcExecution;
14 import org.argeo.slc.runtime.SlcAgent;
15 import org.argeo.slc.runtime.SlcAgentDescriptor;
16 import org.springframework.beans.factory.DisposableBean;
17 import org.springframework.beans.factory.InitializingBean;
18 import org.springframework.jms.core.JmsTemplate;
19
20 /** JMS based implementation of SLC Agent. */
21 public class JmsAgent extends AbstractAgent implements SlcAgent,
22 InitializingBean, DisposableBean {
23 private final static Log log = LogFactory.getLog(JmsAgent.class);
24
25 private final SlcAgentDescriptor agentDescriptor;
26 private JmsTemplate jmsTemplate;
27 private Destination agentRegister;
28 private Destination agentUnregister;
29
30 public JmsAgent() {
31 try {
32 agentDescriptor = new SlcAgentDescriptor();
33 agentDescriptor.setUuid(UUID.randomUUID().toString());
34 agentDescriptor.setHost(InetAddress.getLocalHost().getHostName());
35 } catch (UnknownHostException e) {
36 throw new SlcException("Unable to create agent descriptor.", e);
37 }
38 }
39
40 public void afterPropertiesSet() throws Exception {
41 jmsTemplate.convertAndSend(agentRegister, agentDescriptor);
42 log.info("Agent #" + agentDescriptor.getUuid() + " registered to "
43 + agentRegister);
44 }
45
46 public void destroy() throws Exception {
47 jmsTemplate.convertAndSend(agentUnregister, agentDescriptor);
48 log.info("Agent #" + agentDescriptor.getUuid() + " unregistered from "
49 + agentUnregister);
50 }
51
52 public void newExecution(SlcExecution slcExecution) {
53 log.info("Execute SlcExecution :" + slcExecution);
54 runSlcExecution(slcExecution);
55 }
56
57 public void setJmsTemplate(JmsTemplate jmsTemplate) {
58 this.jmsTemplate = jmsTemplate;
59 }
60
61 public void setAgentRegister(Destination agentRegister) {
62 this.agentRegister = agentRegister;
63 }
64
65 public void setAgentUnregister(Destination agentUnregister) {
66 this.agentUnregister = agentUnregister;
67 }
68
69 public String getMessageSelector() {
70 return "slc-agentId=" + agentDescriptor.getUuid();
71 }
72 }