diff --git a/easybus-core/pom.xml b/easybus-core/pom.xml
index 88a4934..7eb5e0c 100644
--- a/easybus-core/pom.xml
+++ b/easybus-core/pom.xml
@@ -3,12 +3,12 @@
4.0.0
me.kisoft
easybus-core
- 2.2.0
+ 2.3.0
jar
me.kisoft
easybus-parent
- 2.2.0
+ 2.3.0
Easybus Core
@@ -38,6 +38,11 @@
test
jar
+
+ org.slf4j
+ slf4j-api
+ 2.0.3
+
diff --git a/easybus-core/src/main/java/me/kisoft/easybus/EasyBus.java b/easybus-core/src/main/java/me/kisoft/easybus/EasyBus.java
index 2cf3f77..4a9b76e 100644
--- a/easybus-core/src/main/java/me/kisoft/easybus/EasyBus.java
+++ b/easybus-core/src/main/java/me/kisoft/easybus/EasyBus.java
@@ -6,21 +6,21 @@
package me.kisoft.easybus;
import java.lang.reflect.InvocationTargetException;
-import java.util.logging.Level;
-import lombok.extern.java.Log;
import org.reflections.Reflections;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
*
* @author tareq
*/
-@Log
public class EasyBus {
-
+
+ private final Logger log = LoggerFactory.getLogger(EasyBus.class);
private static final String NO_EVENT_CLASS_ERROR = "Error in Class : %s : No Event Class Specified.";
private static final String EVENT_CLASS_NOT_ANNOTATED = "Error in Class : %s : Event Class : %s : Not annotated with @Event";
private static final String NO_METHOD_DEFINED_ERROR = "Error in Class : %s : 'handle' method for Specified Event type : %s : not defined";
-
+
private final Bus bus;
/**
@@ -29,7 +29,7 @@ public class EasyBus {
public EasyBus() {
bus = new MemoryBusImpl();
}
-
+
public EasyBus(Bus bus) {
this.bus = bus;
}
@@ -48,7 +48,7 @@ public void removeHandlers() {
*/
public void post(Object event) {
if (event != null) {
- log.log(Level.FINE, "Event Thrown : {0}", event.getClass().getCanonicalName());
+ log.debug(String.format("Event Thrown : %s", event.getClass().getCanonicalName()));
bus.post(event);
}
}
@@ -91,7 +91,7 @@ public final EasyBus search(ClassLoader loader) {
*/
public final EasyBus search(Reflections r) {
for (Class clazz : r.getTypesAnnotatedWith(Handle.class)) {
-
+
try {
Object o = clazz.getConstructor().newInstance();
if (o.getClass().getAnnotation(Handle.class).event() == null) {
@@ -106,13 +106,13 @@ public final EasyBus search(Reflections r) {
}
}
this.addHandler(new EventHandler(o));
- log.log(Level.INFO, "Added Event Handler {0}", clazz.getSimpleName());
+ log.info(String.format("Added Event Handler %s", clazz.getSimpleName()));
} catch (NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) {
- log.log(Level.SEVERE, null, ex);
+ log.error(ex.getMessage());
throw new RuntimeException(ex);
}
}
-
+
return this;
}
@@ -133,9 +133,9 @@ public void addHandler(EventHandler handler) {
public void removeHandler(EventHandler handler) {
bus.removeHandler(handler);
}
-
+
public void close() throws Exception {
bus.close();
}
-
+
}
diff --git a/easybus-core/src/main/java/me/kisoft/easybus/EventHandler.java b/easybus-core/src/main/java/me/kisoft/easybus/EventHandler.java
index 0aeb41d..2902861 100644
--- a/easybus-core/src/main/java/me/kisoft/easybus/EventHandler.java
+++ b/easybus-core/src/main/java/me/kisoft/easybus/EventHandler.java
@@ -8,15 +8,16 @@
import java.lang.reflect.Method;
import java.util.Objects;
import lombok.Getter;
-import lombok.extern.java.Log;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
*
* @author tareq
*/
-@Log
public class EventHandler {
+ private final Logger log = LoggerFactory.getLogger(EventHandler.class);
private static final String NO_ANNOTATION = "Handler of type %s Must have the @Handle annotation";
private static final String NO_METHOD = "Handler of type %s Must have the public method 'handle' with parameter type %s";
private static final String NO_CLASS = "Handler of type %s is missing the target event class";
@@ -66,7 +67,7 @@ public final void handle(Object event) throws RuntimeException {
try {
this.handlerMethod.invoke(this.handler, event);
} catch (Throwable ex) {
- log.severe(ex.getMessage());
+ log.error(ex.getMessage());
throw new RuntimeException(ex);
}
@@ -108,7 +109,5 @@ public boolean equals(Object obj) {
}
return true;
}
-
-
}
diff --git a/easybus-core/src/main/java/me/kisoft/easybus/MemoryBusImpl.java b/easybus-core/src/main/java/me/kisoft/easybus/MemoryBusImpl.java
index e1b8087..5167881 100644
--- a/easybus-core/src/main/java/me/kisoft/easybus/MemoryBusImpl.java
+++ b/easybus-core/src/main/java/me/kisoft/easybus/MemoryBusImpl.java
@@ -20,7 +20,6 @@
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Collectors;
-import org.apache.commons.lang3.StringUtils;
/**
*
diff --git a/easybus-mongodb/pom.xml b/easybus-mongodb/pom.xml
index 746ef72..9c2f660 100644
--- a/easybus-mongodb/pom.xml
+++ b/easybus-mongodb/pom.xml
@@ -4,11 +4,11 @@
me.kisoft
easybus-parent
- 2.2.0
+ 2.3.0
me.kisoft
easybus-mongodb
- 2.2.0
+ 2.3.0
jar
Easybus Mongodb
Simple, No Frills Event Bus for Java - Mongodb Backing Bus
@@ -59,6 +59,11 @@
1.17.5
test
+
+ org.slf4j
+ slf4j-api
+ 2.0.3
+
diff --git a/easybus-mongodb/src/main/java/me/kisoft/easybus/mongodb/MongodbBusImpl.java b/easybus-mongodb/src/main/java/me/kisoft/easybus/mongodb/MongodbBusImpl.java
index 8181d0a..c2ba613 100644
--- a/easybus-mongodb/src/main/java/me/kisoft/easybus/mongodb/MongodbBusImpl.java
+++ b/easybus-mongodb/src/main/java/me/kisoft/easybus/mongodb/MongodbBusImpl.java
@@ -25,6 +25,8 @@
import me.kisoft.easybus.Bus;
import me.kisoft.easybus.EventHandler;
import org.jongo.Jongo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
*
@@ -32,6 +34,7 @@
*/
public class MongodbBusImpl implements Bus {
+ private final Logger log = LoggerFactory.getLogger(MongodbBusImpl.class);
private final ScheduledExecutorService pool;
private final long pollTime;
private final Map futureMap = new HashMap<>();
diff --git a/easybus-mongodb/src/main/java/me/kisoft/easybus/mongodb/MongodbCollectionPollRunnable.java b/easybus-mongodb/src/main/java/me/kisoft/easybus/mongodb/MongodbCollectionPollRunnable.java
index b4382a0..a11cddc 100644
--- a/easybus-mongodb/src/main/java/me/kisoft/easybus/mongodb/MongodbCollectionPollRunnable.java
+++ b/easybus-mongodb/src/main/java/me/kisoft/easybus/mongodb/MongodbCollectionPollRunnable.java
@@ -17,18 +17,18 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Date;
-import java.util.logging.Level;
-import lombok.extern.java.Log;
import me.kisoft.easybus.EventHandler;
import org.jongo.Jongo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
*
* @author tareq
*/
-@Log
public class MongodbCollectionPollRunnable implements Runnable {
+ private final Logger log = LoggerFactory.getLogger(MongodbCollectionPollRunnable.class);
private final EventHandler handler;
private final Jongo jongo;
private final ObjectMapper mapper = new ObjectMapper();
@@ -63,17 +63,17 @@ public void run() {
.as(MongodbEvent.class);
} catch (RuntimeException ex) {
- log.fine(ex.getMessage());
+ log.debug(ex.getMessage());
event = this.jongo.getCollection(handler.getEventClassName())
.findAndModify("{eventId:#}", event.getEventId())
.with("{$set:{processing:false,handled:false,lastAccess:#}}", new Date())
.as(MongodbEvent.class);
- log.log(Level.FINE, "Re-Submitting event with id : {0}", event.getEventId());
+ log.debug(String.format("Re-Submitting event with id : %s", event.getEventId()));
}
}
} catch (IllegalArgumentException ex) {
- log.severe(ex.getMessage());
+ log.error(ex.getMessage());
}
}
diff --git a/easybus-rabbitmq/pom.xml b/easybus-rabbitmq/pom.xml
index e3ec615..ceada33 100644
--- a/easybus-rabbitmq/pom.xml
+++ b/easybus-rabbitmq/pom.xml
@@ -4,10 +4,10 @@
me.kisoft
easybus-parent
- 2.2.0
+ 2.3.0
easybus-rabbitmq
- 2.2.0
+ 2.3.0
jar
Easybus RabbitMQ
Simple, No Frills Event Bus for Java Backed by RabbitMQ
@@ -57,5 +57,10 @@
1.17.5
test
+
+ org.slf4j
+ slf4j-api
+ 2.0.3
+
\ No newline at end of file
diff --git a/easybus-rabbitmq/src/main/java/me/kisoft/easybus/rabbitmq/RabbitMQBusImpl.java b/easybus-rabbitmq/src/main/java/me/kisoft/easybus/rabbitmq/RabbitMQBusImpl.java
index e0931a9..c6100ab 100644
--- a/easybus-rabbitmq/src/main/java/me/kisoft/easybus/rabbitmq/RabbitMQBusImpl.java
+++ b/easybus-rabbitmq/src/main/java/me/kisoft/easybus/rabbitmq/RabbitMQBusImpl.java
@@ -16,7 +16,6 @@
package me.kisoft.easybus.rabbitmq;
import com.fasterxml.jackson.databind.ObjectMapper;
-import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.BuiltinExchangeType;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
@@ -25,22 +24,24 @@
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeoutException;
-import lombok.extern.java.Log;
import me.kisoft.easybus.Bus;
import me.kisoft.easybus.EventHandler;
import org.apache.commons.lang3.RandomStringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
*
* @author tareq
*/
-@Log
public class RabbitMQBusImpl implements Bus {
+ private final Logger log = LoggerFactory.getLogger(RabbitMQBusImpl.class);
private final Connection connection;
private final ObjectMapper mapper = new ObjectMapper();
private final Map tagMap = new HashMap<>();
private final Map channelMap = new HashMap<>();
+ private final Map exchangeExistanceMap = new HashMap<>();
public RabbitMQBusImpl(Connection connection) {
this.connection = connection;
@@ -59,6 +60,11 @@ public RabbitMQBusImpl() {
@Override
public void post(Object object) {
try ( Channel channel = this.connection.createChannel()) {
+ String exchangeName = getExcahngeName(object.getClass());
+ if (!exchangeExistanceMap.getOrDefault(exchangeName, Boolean.FALSE)) {
+ channel.exchangeDeclare(exchangeName, BuiltinExchangeType.FANOUT);
+ exchangeExistanceMap.put(exchangeName, Boolean.TRUE);
+ }
channel.basicPublish(getExcahngeName(object.getClass()), "all", null, mapper.writer().writeValueAsBytes(object));
} catch (IOException | TimeoutException ex) {
throw new RuntimeException(ex);
@@ -92,14 +98,14 @@ public void clear() {
try {
channel.basicCancel(tag);
} catch (IOException ex) {
- log.severe(ex.getMessage());
+ log.debug(ex.getMessage());
}
});
channelMap.values().forEach(usedChannel -> {
try {
usedChannel.close();
} catch (IOException | TimeoutException ex) {
- log.severe(ex.getMessage());
+ log.error(ex.getMessage());
}
});
} catch (IOException | TimeoutException ex) {
@@ -117,7 +123,7 @@ public void addHandler(EventHandler handler) {
channel.queueDeclare(queueName, false, false, false, null).getQueue();
channel.queueBind(queueName, exchangeName, RandomStringUtils.randomAlphabetic(30));
String tag = channel.basicConsume(getQueueName(handler.getHandler()), (consumerTag, delivery) -> {
- log.fine(String.format("Received Message from Exchange %s Queue %s with Delivery Tag %s", exchangeName, queueName, String.valueOf(delivery.getEnvelope().getDeliveryTag())));
+ log.debug(String.format("Received Message from Exchange %s Queue %s with Delivery Tag %s", exchangeName, queueName, String.valueOf(delivery.getEnvelope().getDeliveryTag())));
handler.handle(mapper.reader().forType(handler.getEventClass()).readValue(delivery.getBody()));
channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
}, consumerTag -> {
@@ -133,11 +139,14 @@ public void addHandler(EventHandler handler) {
public void removeHandler(EventHandler handler) {
try {
String consumerTag = tagMap.get(handler);
- Channel channel = channelMap.get(handler);
- channel.basicCancel(consumerTag);
- channel.close();
+ try ( Channel channel = channelMap.get(handler)) {
+ channel.basicCancel(consumerTag);
+ }
} catch (IOException | TimeoutException ex) {
throw new RuntimeException(ex);
+ } finally {
+ channelMap.remove(handler);
+ tagMap.remove(handler);
}
}
@@ -147,7 +156,7 @@ public void close() throws IOException {
try {
channel.close();
} catch (IOException | TimeoutException ex) {
- log.severe(ex.getMessage());
+ log.error(ex.getMessage());
}
});
connection.close();
diff --git a/pom.xml b/pom.xml
index fe2e66d..485ae3b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
me.kisoft
easybus-parent
- 2.2.0
+ 2.3.0
EasyBus
pom