Commons/src/main/java/eu/univento/commons/messaging/MessageHandler.java

44 lines
1.5 KiB
Java

/*
* 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<MessageEvent> events = new ArrayList<>();
public static void registerListener(String queue, MessageEvent event) {
events.add(event);
Commons.getCommons().getVertx().eventBus().consumer(queue, msg -> {
JsonObject json = (JsonObject) msg.body();
event.onMessageReceived(queue, json.getString("body"));
});
Commons.getCommons().getMessagingManager().start().whenComplete((rabbitMQ, throwable) -> rabbitMQ.getClient().basicConsume(queue, queue, res -> {
if(!res.succeeded()) res.cause().printStackTrace();
}));
}
public static void sendMessage(String queue, String message) {
Commons.getCommons().getMessagingManager().start().whenComplete((rabbitMQ, throwable) -> rabbitMQ.getClient().basicPublish("", queue, new JsonObject().put("body", message), res -> {
if(res.succeeded()) {
for(MessageEvent event : events) {
event.onMessageSend(queue, message);
}
}else res.cause().printStackTrace();
}));
}
}