From 8d3dd3ba48ff3c0a29316b9effdf8e2a99a314fe Mon Sep 17 00:00:00 2001 From: Mohamed Date: Fri, 9 May 2025 15:58:55 +0300 Subject: [PATCH] feat: add events constants --- .gitignore | 49 +++++++----- pom.xml | 41 ++++++++++ .../java/com/podzilla/mq/EventConsumer.java | 13 ++++ .../java/com/podzilla/mq/EventMetadata.java | 13 ++-- .../java/com/podzilla/mq/EventProducer.java | 17 ++++ .../java/com/podzilla/mq/EventsConstants.java | 73 +++++++++++++++--- .../java/com/podzilla/mq/RabbitMQConfig.java | 23 ++++++ .../com/podzilla/mq/utils/RabbitMqNaming.java | 14 ++-- .../com/podzilla/mq/EventMetadata.class | Bin 516 -> 838 bytes .../com/podzilla/mq/EventsConstants.class | Bin 746 -> 2479 bytes .../podzilla/mq/utils/RabbitMqNaming.class | Bin 1017 -> 950 bytes target/maven-archiver/pom.properties | 2 +- .../compile/default-compile/createdFiles.lst | 7 +- .../compile/default-compile/inputFiles.lst | 8 +- 14 files changed, 205 insertions(+), 55 deletions(-) create mode 100644 src/main/java/com/podzilla/mq/EventConsumer.java create mode 100644 src/main/java/com/podzilla/mq/EventProducer.java create mode 100644 src/main/java/com/podzilla/mq/RabbitMQConfig.java 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 152b01b6394cb9a78e4da98b481f26136bb3b8be..1c31226d799ab927834cfc4a9c473ed240e890cd 100644 GIT binary patch literal 838 zcma)3T~8B16g|^jx=>c2SOh@?-r5D+7ha6S#1JILiiwy$`7+(!lxcTobeT55ufoK} z#0P$WKgxJ#X`%)qec1c8_nv#tnV-LYTm#s{R)CVgdSbHpv*}!_G?j7oB|aRIw(rQw zjFR;*)Lm8)1cjNc%9wk=5*D@o4#pa)1CpK5Q`$E9$(}ln^ohPR}!d*d^>~Yaw zt2geNSo<*0R%P@?57n7!r}Ro|W2IF_pSdNe$=aqLACab9TI%o;|G;!;1_JXTrch?z zRGN+lS)1~Yk|ErjNo3lRxpMiq=-X4pm>bRi(&hzaKKdWu~ zX;&}rE3NEHf#>zx>?Wx+S`~O$53!1;tY5v+5~!S*L7vcSRZ#ioQJy)`vBej7{E!~1 zP63Xp?##mTS?qo8m_Y?4%yL%dEM)(HznEjeek%HgxhoDzSYYc~oUO7AZyKEW z?ss0ri>Ke;#}imFjP)^Dt7xh4qVxWsaj6&rstR{9-3BP?h62UEYa0CAg@#i6*(6sL z?UXbDTC^;iCmcMvp}k}5ETv}WDGj?wY274uXp44a5=!zJWNcN~7DjTgIZu~fGIGa$ HKcfae{ZAF4 diff --git a/target/classes/com/podzilla/mq/EventsConstants.class b/target/classes/com/podzilla/mq/EventsConstants.class index 84759c74cb733b26416fd7bc6645e8c5f4a4df7f..65fe1fa27c9ef12762cd9bf174535cc1173be758 100644 GIT binary patch literal 2479 zcma)7TXPd-7=D&hLs=*+#}=`m2rWVih#U*DY_@G6Bq1j#9+vH9X||-vEVE)}OV*{bSvD1DnJ%Fi23}+Sl!CP#n-#m>b`w}lBX+~C-w8dZWwl#w zV7bD#b+hfZT?N~_9&&}$<1P|VsnBKnLG?-cXqTSOir{jE+1@A<7-IHa6JA3&_k%l+ zN3k{X-6sM~!PdxcAMe{Q>jiTr$I@7RsGAx5Ejw^)KGU}P(1(p&xsYbgeaPDs3_E^1 z@R)HQs@9E@fuYl_}QHbRNaC*@3lfVaH|O)Tc0(mywp)BbLp)W)Qs>S2pvt zUXv4-K)!A}!tE6fp;S*cr9^nVs$x_qzar*OC>wUeaqD%V{~B|S^qr1SP_C)iDJXMd z3Z;G9xna)>Mzs@AvKh++;kt@lf>2YiMH2K@%bRbw)si2NRRRkf_sEwWKeR&MipNM8 zsjGNK7-@)25?+fnuh|q%n~Wo(wjz;G4^%uW)OjsOd8ORCw-gQT(xbep9igDyRe|=BQ%up8g90|IOhf>d#=tqTFdy3U9Z@IC$JO_VmaOw z)4!K%7uLL%f?fS@pYBVB_s?LFOXs*#j6%VtCtgBH@jAgFhO(TmE{(ge603*?h?XHi zJlKQR5U=gQ>xkF);0?qZd+;XWEj@TEF}IDjhsBP_lLIbKPOLmRbn@gp$&*7OPxfA( zY@a;Y7kRSS@?;%(ikSCcFEbbels}n``27A0#%HzXwFBD3104DRFG_q&JE5JD__V|? zX}V@eY)U+>rDJ?S;)_~NyCk0%B`#~1V>~PI%i60kwj{PSC&sSC^O_gq8xk*SevEHQ z+|t@Hz9sP;?e!SH`Mpf-ZT|j+)BGL63R(CKOjl!zhKM#|6Te%q8Qb_fLcEjzcC*xb zh{jm(eZ&WOH5}n)ALYUxr^ZR*v)qXk2Yrg#GaShC#CaC6L{^1Y?iDhx5?{l9RB-^; zkwgs>SRih4ctRY;66f+ZE#D=+N9*t781B=v6xi9f+9e2PhY#`r(S8GJ$fB|U!y z9be-dzJY;niNAx19~sF{n8weH<{|NKJnzX0hz4{1qxSNj!Y{CL-vhkUEzuyAC}fFN TNtzld;XMY$p}+^y)ct<|Crwpo delta 421 zcmYL^%Sr<=6o&tdHcn^KTc*}dt=d+tH>?{sE)+^FA_y&`1zkyL2QL(rQNf+hAoCz1 zE(!`hfKTDtoe!XR600VV=dUY@SU}al0 zyiEelooX$7GxAJ?pGIjT&S1AL{h${3?JK`)BFP}G2~;}2L^8w_S@v%_$L+Ht--3;_ zz$h|dZ)kffD-Z!Ukt0b=wR4xW&k|D0ipDPN6g1`uPxWrgpQ{ksK`K()(Slw zBp4cr_Cj24p>7*!|hG6_%4Vl12d zhB1s&onEmalhXU8!&?chjOo!}h| zq8orRObq-$5~7EPK>)~BfaqY528x1!7=sK{UW`E&$YNsPWDsVM1KPp^lnnsdzyzda w;5KYwkOx|#wS_??*e;S)8=FOfV2i{c8X43XG(h$MtpOR&2!xtI9utEW0CH0>O#lD@ 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