From b67ec43f5f581bb07a3f4c7e40d29498536b3712 Mon Sep 17 00:00:00 2001 From: joethei Date: Fri, 14 Apr 2017 11:02:35 +0200 Subject: [PATCH] + added Message handling for RabbitMQ --- .gitlab-ci.yml | 2 +- .gitlab/settings.xml | 2 +- Commons.iml | 1 + pom.xml | 82 +++++++++++++++++-- .../java/eu/univento/commons/Commons.java | 2 +- .../univento/commons/event/MessageEvent.java | 16 ++++ .../commons/messaging/MessageHandler.java | 44 ++++++++++ .../commons/messaging/MessagingManager.java | 2 +- .../univento/commons/messaging/RabbitMQ.java | 2 +- .../java/eu/univento/commons/utils/Files.java | 55 +++++++++++++ src/main/resources/config.properties | 4 +- 11 files changed, 199 insertions(+), 13 deletions(-) create mode 100644 src/main/java/eu/univento/commons/event/MessageEvent.java create mode 100644 src/main/java/eu/univento/commons/messaging/MessageHandler.java create mode 100644 src/main/java/eu/univento/commons/utils/Files.java diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ee2feda..8a7574b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,7 @@ image: maven:3-jdk-8 build: - script: "mvn clean package --settings .gitlab/settings.xml" + script: "mvn clean install deploy site:deploy --settings .gitlab/settings.xml" artifacts: name: "Commons" paths: diff --git a/.gitlab/settings.xml b/.gitlab/settings.xml index 1d1636c..8093b52 100644 --- a/.gitlab/settings.xml +++ b/.gitlab/settings.xml @@ -3,7 +3,7 @@ univentoEU download - PLCtNT3GEM43bvBc2mRvQMsYe!0JtB + ${env.password} diff --git a/Commons.iml b/Commons.iml index d2bd4a9..6674208 100644 --- a/Commons.iml +++ b/Commons.iml @@ -55,5 +55,6 @@ + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 37f5f10..7b3a476 100644 --- a/pom.xml +++ b/pom.xml @@ -7,9 +7,79 @@ 1.0-SNAPSHOT univento.eu Common Code + 2016 + Das Commons Modul stellt alles zur Verfügung was von allen anderen Modulen benötigt wird, wie etwa Datenbank Zugriffe + https://development.univento.eu/docs/Commons + + + univentoEU + https://univento.eu + + + + + joethei + Johannes Theiner + joethei@univento.eu + https://joethei.de + univentoEU + + architect + developer + + Europe/Berlin + + https://de.gravatar.com/userimage/65052389/84435a829d76e6b6c48d67cdd463c6ab.png?size=300 + + + + + + gitlab + https://development.univento.eu/issues/Commons + + + + gitlab + https://development.univento.eu/ci/Commons + + + + + univentoEU + https://development.univento.eu/maven/repositories/univento + + + univento.commons + univento Commons + sftp://development.univento.eu/doc/Commons + + + + org.apache.maven.plugins + maven-site-plugin + 3.6 + + + org.apache.maven.enforcer + enforcer + + + validate + + enforce + + + + + + + + + org.apache.maven.plugins maven-compiler-plugin @@ -45,13 +115,6 @@ - - - univentoEU - http://play.univento.eu:8081/repository/univento/ - - - org.projectlombok @@ -139,5 +202,10 @@ 4.12 test + + org.gitlab + java-gitlab-api + 1.2.7 + \ No newline at end of file diff --git a/src/main/java/eu/univento/commons/Commons.java b/src/main/java/eu/univento/commons/Commons.java index 73a3029..a81ec5a 100644 --- a/src/main/java/eu/univento/commons/Commons.java +++ b/src/main/java/eu/univento/commons/Commons.java @@ -9,7 +9,7 @@ import lombok.Getter; /** * @author joethei - * @version 1.0 + * @version 1.1 */ @Getter diff --git a/src/main/java/eu/univento/commons/event/MessageEvent.java b/src/main/java/eu/univento/commons/event/MessageEvent.java new file mode 100644 index 0000000..23d8952 --- /dev/null +++ b/src/main/java/eu/univento/commons/event/MessageEvent.java @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2017 univento.eu - All rights reserved + * You are not allowed to use, distribute or modify this code + */ + +package eu.univento.commons.event; + +/** + * @author joethei + * @version 0.1 + */ +public interface MessageEvent { + + void onMessageReceived(String queue, String message); + void onMessageSend(String queue, String message); +} \ No newline at end of file diff --git a/src/main/java/eu/univento/commons/messaging/MessageHandler.java b/src/main/java/eu/univento/commons/messaging/MessageHandler.java new file mode 100644 index 0000000..7aab4a8 --- /dev/null +++ b/src/main/java/eu/univento/commons/messaging/MessageHandler.java @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2017 univento.eu - All rights reserved + * You are not allowed to use, distribute or modify this code + */ + +package eu.univento.commons.messaging; + +import eu.univento.commons.Commons; +import eu.univento.commons.event.MessageEvent; +import io.vertx.core.json.JsonObject; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author joethei + * @version 1.0 + */ +public class MessageHandler { + + private static List events = new ArrayList<>(); + + public static void registerListener(String queue, MessageEvent event) { + events.add(event); + Commons.getCommons().getMessagingManager().getRabbitMQ().getClient().basicConsume(queue, "univento." + queue, res -> { + if(!res.succeeded()) res.cause().printStackTrace(); + }); + + Commons.getCommons().getVertx().eventBus().consumer(queue, msg -> { + JsonObject json = (JsonObject) msg.body(); + event.onMessageReceived(queue, json.getString("body")); + }); + } + + public static void sendMessage(String queue, String message) { + Commons.getCommons().getMessagingManager().getRabbitMQ().getClient().basicPublish("", queue, new JsonObject().put("body", message), res -> { + if(res.succeeded()) { + for(MessageEvent event : events) { + event.onMessageSend(queue, message); + } + }else res.cause().printStackTrace(); + }); + } +} \ No newline at end of file diff --git a/src/main/java/eu/univento/commons/messaging/MessagingManager.java b/src/main/java/eu/univento/commons/messaging/MessagingManager.java index 274d4c2..9c3bb20 100644 --- a/src/main/java/eu/univento/commons/messaging/MessagingManager.java +++ b/src/main/java/eu/univento/commons/messaging/MessagingManager.java @@ -11,7 +11,7 @@ import lombok.Getter; /** * @author joethei - * @version 0.1 + * @version 1.0 */ public class MessagingManager { diff --git a/src/main/java/eu/univento/commons/messaging/RabbitMQ.java b/src/main/java/eu/univento/commons/messaging/RabbitMQ.java index 9cb191f..a7eebd4 100644 --- a/src/main/java/eu/univento/commons/messaging/RabbitMQ.java +++ b/src/main/java/eu/univento/commons/messaging/RabbitMQ.java @@ -12,7 +12,7 @@ import lombok.Getter; /** * @author joethei - * @version 0.1 + * @version 1.0 */ public class RabbitMQ { diff --git a/src/main/java/eu/univento/commons/utils/Files.java b/src/main/java/eu/univento/commons/utils/Files.java new file mode 100644 index 0000000..d31c769 --- /dev/null +++ b/src/main/java/eu/univento/commons/utils/Files.java @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2017 univento.eu - All rights reserved + * You are not allowed to use, distribute or modify this code + */ + +package eu.univento.commons.utils; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; + +/** + * @author joethei + * @version 1.0 + */ +public class Files { + + public static void unzip(File zipFile, File folder) { + byte[] buffer = new byte[1024]; + + try { + if (!folder.exists()) { + folder.mkdir(); + } + + ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFile)); + ZipEntry entry; + while ((entry = zis.getNextEntry()) != null) { + + String fileName = entry.getName(); + File newFile = new File(folder + File.separator + fileName); + + new File(newFile.getParent()).mkdirs(); + + FileOutputStream fos = new FileOutputStream(newFile); + + int len; + while ((len = zis.read(buffer)) > 0) { + fos.write(buffer, 0, len); + } + + fos.close(); + } + + zis.closeEntry(); + zis.close(); + } catch (IOException ex) { + ex.printStackTrace(); + } + } + +} \ No newline at end of file diff --git a/src/main/resources/config.properties b/src/main/resources/config.properties index 8d027a6..24a1abe 100644 --- a/src/main/resources/config.properties +++ b/src/main/resources/config.properties @@ -25,4 +25,6 @@ RabbitMQ.Host = vps.joethei.de RabbitMQ.Port = 5672 RabbitMQ.Username = univento RabbitMQ.Password = tYRHXZNm4exW@QB6rMm72pHnafrT8wQ5ebGPEetJDBVU2mj25kTVXuYeQavb#EYr -RabbitMQ.VirtualHost = univento \ No newline at end of file +RabbitMQ.VirtualHost = univento +Gitlab.Host = https://gitlab.com/ +Gitlab.token = add token here \ No newline at end of file