diff options
Diffstat (limited to 'calamus-engine/src/main/java/io/trygvis/engine/MqClient.java')
-rw-r--r-- | calamus-engine/src/main/java/io/trygvis/engine/MqClient.java | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/calamus-engine/src/main/java/io/trygvis/engine/MqClient.java b/calamus-engine/src/main/java/io/trygvis/engine/MqClient.java new file mode 100644 index 0000000..b609c9f --- /dev/null +++ b/calamus-engine/src/main/java/io/trygvis/engine/MqClient.java @@ -0,0 +1,73 @@ +package io.trygvis.engine; + +import org.apache.activemq.ActiveMQConnectionFactory; +import org.kie.internal.runtime.StatefulKnowledgeSession; + +import javax.jms.Connection; +import javax.jms.Destination; +import javax.jms.JMSException; +import javax.jms.MapMessage; +import javax.jms.Message; +import javax.jms.MessageConsumer; +import javax.jms.MessageListener; +import javax.jms.Session; + +import static javax.jms.Session.AUTO_ACKNOWLEDGE; + +public class MqClient implements AutoCloseable { + + private Connection connection; +// private final ActiveMQConnectionFactory connectionFactory; +// private final StatefulKnowledgeSession jbpm; + + public MqClient(final StatefulKnowledgeSession jbpm, String brukerUrl) { +// this.jbpm = jbpm; + ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brukerUrl); + + try { + connection = connectionFactory.createConnection(); + connection.start(); + + Session session = connection.createSession(false, AUTO_ACKNOWLEDGE); + + Destination destination = session.createQueue("jenkins.build-result"); + + MessageConsumer consumer = session.createConsumer(destination); + consumer.setMessageListener(new MessageListener() { + @Override + public void onMessage(Message message) { + if (!(message instanceof MapMessage)) { + return; + } + + MapMessage m = (MapMessage) message; + + try { + String jobName = m.getString("jobName"); + int buildNumber = m.getInt("buildNumber"); + String result = m.getString("result"); + +/* + String type; + Object event; + long processInstanceId; + jbpm.signalEvent(type, event, processInstanceId); +*/ + } catch (JMSException e) { + e.printStackTrace(); + } + } + }); + } catch (JMSException e) { + e.printStackTrace(); + } + } + + @Override + public void close() throws Exception { + if (connection != null) { + connection.close(); + this.connection = null; + } + } +} |