diff --git a/.gitignore b/.gitignore
index 524f096..549e00a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,24 +1,33 @@
-# Compiled class file
-*.class
+HELP.md
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
-# Log file
-*.log
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
-# BlueJ files
-*.ctxt
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
-# Mobile Tools for Java (J2ME)
-.mtj.tmp/
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
-# Package Files #
-*.jar
-*.war
-*.nar
-*.ear
-*.zip
-*.tar.gz
-*.rar
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
-replay_pid*
+### VS Code ###
+.vscode/
diff --git a/pom.xml b/pom.xml
index faad115..c0e3501 100644
--- a/pom.xml
+++ b/pom.xml
@@ -19,5 +19,46 @@
+
+ org.springframework.boot
+ spring-boot-starter-amqp
+ 3.2.5
+
+
+
+ org.springframework.boot
+ spring-boot-starter-json
+ 3.2.5
+
+
+
+ org.projectlombok
+ lombok
+ true
+ 1.18.28
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.junit.vintage
+ junit-vintage-engine
+
+
+ 3.2.5
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
diff --git a/src/main/java/com/podzilla/mq/EventConsumer.java b/src/main/java/com/podzilla/mq/EventConsumer.java
new file mode 100644
index 0000000..183b1b7
--- /dev/null
+++ b/src/main/java/com/podzilla/mq/EventConsumer.java
@@ -0,0 +1,13 @@
+package com.podzilla.mq;
+
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.stereotype.Component;
+
+@Component
+public class EventConsumer {
+
+ @RabbitListener(queues = EventsConstants.ANALYTICS_USER_EVENT_QUEUE)
+ public void consumeEvent(String payload) {
+ System.out.println("Consuming event: " + payload);
+ }
+}
diff --git a/src/main/java/com/podzilla/mq/EventMetadata.java b/src/main/java/com/podzilla/mq/EventMetadata.java
index 75d22a8..d9e3463 100644
--- a/src/main/java/com/podzilla/mq/EventMetadata.java
+++ b/src/main/java/com/podzilla/mq/EventMetadata.java
@@ -1,15 +1,12 @@
package com.podzilla.mq;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
public class EventMetadata {
public final String name;
public final String key;
public final String exchange;
-
- public EventMetadata(String name, String key, String exchange) {
- this.name = name;
- this.key = key;
- this.exchange = exchange;
- }
-
-
}
diff --git a/src/main/java/com/podzilla/mq/EventProducer.java b/src/main/java/com/podzilla/mq/EventProducer.java
new file mode 100644
index 0000000..062198f
--- /dev/null
+++ b/src/main/java/com/podzilla/mq/EventProducer.java
@@ -0,0 +1,17 @@
+package com.podzilla.mq;
+
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.stereotype.Component;
+
+import lombok.AllArgsConstructor;
+
+@Component
+@AllArgsConstructor
+public class EventProducer {
+ private final RabbitTemplate rabbitTemplate;
+
+ public void publishEvent(EventMetadata eventMetadata) {
+ rabbitTemplate.convertAndSend(eventMetadata.getExchange(),
+ eventMetadata.getKey(), "Hello World");
+ }
+}
diff --git a/src/main/java/com/podzilla/mq/EventsConstants.java b/src/main/java/com/podzilla/mq/EventsConstants.java
index 8b4b0de..2ad2f48 100644
--- a/src/main/java/com/podzilla/mq/EventsConstants.java
+++ b/src/main/java/com/podzilla/mq/EventsConstants.java
@@ -1,24 +1,73 @@
package com.podzilla.mq;
-
public final class EventsConstants {
- private EventsConstants() {}
+ private EventsConstants() {
+ }
+
+ public static final String ANALYTICS_USER_EVENT_QUEUE = "analytics_user_event_queue";
+ public static final String ANALYTICS_ORDER_EVENT_QUEUE = "analytics_order_event_queue";
+ public static final String ANALYTICS_INVENTORY_EVENT_QUEUE = "analytics_inventory_event_queue";
+ public static final String ORDER_ORDER_EVENT_QUEUE = "order_order_event_queue";
+ public static final String WAREHOUSE_ORDER_EVENT_QUEUE = "warehouse_order_event_queue";
+ public static final String COURIER_ORDER_EVENT_QUEUE = "courier_order_event_queue";
+
+ public static final EventMetadata COURIER_REGISTERED = new EventMetadata(
+ "CourierRegistered",
+ "courier.registered",
+ "courier_exchange");
+ public static final EventMetadata CUSTOMER_REGISTERED = new EventMetadata(
+ "CustomerRegistered",
+ "customer.registered",
+ "customer_exchange");
+
+ public static final EventMetadata PRODUCT_CREATED = new EventMetadata(
+ "ProductCreated",
+ "product.created",
+ "inventory_exchange");
+ public static final EventMetadata INVENTORY_UPDATED = new EventMetadata(
+ "InventoryUpdated",
+ "inventory.updated",
+ "inventory_exchange");
- public static final EventMetadata USER_CREATED = new EventMetadata(
- "UserCreated",
- "user.created",
- "user-exchange"
- );
+ public static final EventMetadata CART_CHECKEDOUT = new EventMetadata(
+ "CartCheckedOut",
+ "cart.checkout",
+ "order_exchange");
public static final EventMetadata ORDER_PLACED = new EventMetadata(
- "OrderPlaced",
- "order.placed",
- "order-exchange"
- );
+ "OrderPlaced",
+ "order.placed",
+ "order_exchange");
+ public static final EventMetadata ORDER_CANCELLED = new EventMetadata(
+ "OrderCancelled",
+ "order.cancelled",
+ "order_exchange");
+ public static final EventMetadata ORDER_PACKAGED = new EventMetadata(
+ "OrderPackaged",
+ "order.packaged",
+ "order_exchange");
-}
+ public static final EventMetadata ORDER_ASSIGNED_TO_COURIER = new EventMetadata(
+ "OrderAssignedToCourier",
+ "order.assigned_to_courier",
+ "order_exchange");
+
+ public static final EventMetadata ORDER_SHIPPED = new EventMetadata(
+ "OrderShipped",
+ "order.shipped",
+ "order_exchange");
+ public static final EventMetadata ORDER_DELIVERED = new EventMetadata(
+ "OrderDelivered",
+ "order.delivered",
+ "order_exchange");
+
+ public static final EventMetadata ORDER_FAILED = new EventMetadata(
+ "OrderFailed",
+ "order.failed",
+ "order_exchange");
+}
diff --git a/src/main/java/com/podzilla/mq/RabbitMQConfig.java b/src/main/java/com/podzilla/mq/RabbitMQConfig.java
new file mode 100644
index 0000000..49c70f1
--- /dev/null
+++ b/src/main/java/com/podzilla/mq/RabbitMQConfig.java
@@ -0,0 +1,23 @@
+package com.podzilla.mq;
+
+import org.springframework.amqp.rabbit.connection.ConnectionFactory;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
+import org.springframework.amqp.support.converter.MessageConverter;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class RabbitMQConfig {
+ @Bean
+ public MessageConverter jsonMessageConverter() {
+ return new Jackson2JsonMessageConverter();
+ }
+
+ @Bean
+ public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) {
+ RabbitTemplate template = new RabbitTemplate(connectionFactory);
+ template.setMessageConverter(jsonMessageConverter());
+ return template;
+ }
+}
diff --git a/src/main/java/com/podzilla/mq/utils/RabbitMqNaming.java b/src/main/java/com/podzilla/mq/utils/RabbitMqNaming.java
index d74120d..a25c702 100644
--- a/src/main/java/com/podzilla/mq/utils/RabbitMqNaming.java
+++ b/src/main/java/com/podzilla/mq/utils/RabbitMqNaming.java
@@ -4,19 +4,17 @@
public class RabbitMqNaming {
- private RabbitMqNaming() {}
+ private RabbitMqNaming() {
+ }
- private static final String QUEUE_NAME_FORMAT = "QUEUE_%s_%s_%s";
+ private static final String QUEUE_NAME_FORMAT = "%s_%s_queue";
- public static String getQueueName(String exchangeName, String eventName, String serviceName) {
- return String.format(QUEUE_NAME_FORMAT, exchangeName, eventName, serviceName);
+ public static String getQueueName(String exchangeName, String serviceName) {
+ return String.format(QUEUE_NAME_FORMAT, serviceName, exchangeName);
}
public static String getQueueName(EventMetadata event, String serviceName) {
- return String.format(QUEUE_NAME_FORMAT, event.exchange, event.name , serviceName);
+ return String.format(QUEUE_NAME_FORMAT, serviceName, event.exchange);
}
}
-
-
-// test
\ No newline at end of file
diff --git a/target/classes/com/podzilla/mq/EventMetadata.class b/target/classes/com/podzilla/mq/EventMetadata.class
index 152b01b..1c31226 100644
Binary files a/target/classes/com/podzilla/mq/EventMetadata.class and b/target/classes/com/podzilla/mq/EventMetadata.class differ
diff --git a/target/classes/com/podzilla/mq/EventsConstants.class b/target/classes/com/podzilla/mq/EventsConstants.class
index 84759c7..65fe1fa 100644
Binary files a/target/classes/com/podzilla/mq/EventsConstants.class and b/target/classes/com/podzilla/mq/EventsConstants.class differ
diff --git a/target/classes/com/podzilla/mq/utils/RabbitMqNaming.class b/target/classes/com/podzilla/mq/utils/RabbitMqNaming.class
index a41b637..32305f1 100644
Binary files a/target/classes/com/podzilla/mq/utils/RabbitMqNaming.class and b/target/classes/com/podzilla/mq/utils/RabbitMqNaming.class differ
diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties
index 96079dc..1d05ae7 100644
--- a/target/maven-archiver/pom.properties
+++ b/target/maven-archiver/pom.properties
@@ -1,3 +1,3 @@
artifactId=mq-utils-lib
groupId=com.podzilla
-version=1.0.3
+version=1.0.3-SNAPSHOT
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
index 2b57acd..4661295 100644
--- a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -1,3 +1,4 @@
-com\podzilla\mq\EventsConstants.class
-com\podzilla\mq\utils\RabbitMqNaming.class
-com\podzilla\mq\EventMetadata.class
+com/podzilla/mq/utils/RabbitMqNaming.class
+com/podzilla/mq/RabbitMQConfig.class
+com/podzilla/mq/EventMetadata.class
+com/podzilla/mq/EventsConstants.class
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
index 5b0c4e0..35c106b 100644
--- a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -1,3 +1,5 @@
-D:\Abdo\Uni\GUC\10 sem\scalable\mq\mq-utils-lib\src\main\java\com\podzilla\mq\EventMetadata.java
-D:\Abdo\Uni\GUC\10 sem\scalable\mq\mq-utils-lib\src\main\java\com\podzilla\mq\EventsConstants.java
-D:\Abdo\Uni\GUC\10 sem\scalable\mq\mq-utils-lib\src\main\java\com\podzilla\mq\utils\RabbitMqNaming.java
+/home/mohamedk/dev/scalable/podzilla/mq-utils-lib/src/main/java/com/podzilla/mq/EventMetadata.java
+/home/mohamedk/dev/scalable/podzilla/mq-utils-lib/src/main/java/com/podzilla/mq/EventProducer.java
+/home/mohamedk/dev/scalable/podzilla/mq-utils-lib/src/main/java/com/podzilla/mq/EventsConstants.java
+/home/mohamedk/dev/scalable/podzilla/mq-utils-lib/src/main/java/com/podzilla/mq/RabbitMQConfig.java
+/home/mohamedk/dev/scalable/podzilla/mq-utils-lib/src/main/java/com/podzilla/mq/utils/RabbitMqNaming.java