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