Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 29 additions & 20 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -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/
41 changes: 41 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,46 @@
</distributionManagement>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
<version>3.2.5</version>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-json</artifactId>
<version>3.2.5</version>
</dependency>

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
<version>1.18.28</version>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
<version>3.2.5</version>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>
13 changes: 13 additions & 0 deletions src/main/java/com/podzilla/mq/EventConsumer.java
Original file line number Diff line number Diff line change
@@ -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);
}
}
13 changes: 5 additions & 8 deletions src/main/java/com/podzilla/mq/EventMetadata.java
Original file line number Diff line number Diff line change
@@ -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;
}


}
17 changes: 17 additions & 0 deletions src/main/java/com/podzilla/mq/EventProducer.java
Original file line number Diff line number Diff line change
@@ -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");
}
}
73 changes: 61 additions & 12 deletions src/main/java/com/podzilla/mq/EventsConstants.java
Original file line number Diff line number Diff line change
@@ -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");
}
23 changes: 23 additions & 0 deletions src/main/java/com/podzilla/mq/RabbitMQConfig.java
Original file line number Diff line number Diff line change
@@ -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;
}
}
14 changes: 6 additions & 8 deletions src/main/java/com/podzilla/mq/utils/RabbitMqNaming.java
Original file line number Diff line number Diff line change
Expand Up @@ -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
Binary file modified target/classes/com/podzilla/mq/EventMetadata.class
Binary file not shown.
Binary file modified target/classes/com/podzilla/mq/EventsConstants.class
Binary file not shown.
Binary file modified target/classes/com/podzilla/mq/utils/RabbitMqNaming.class
Binary file not shown.
2 changes: 1 addition & 1 deletion target/maven-archiver/pom.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
artifactId=mq-utils-lib
groupId=com.podzilla
version=1.0.3
version=1.0.3-SNAPSHOT
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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