From 169159d670ae91d187e6515fca6770212476eff6 Mon Sep 17 00:00:00 2001 From: Adilet K Date: Mon, 10 Jul 2023 20:45:19 +0600 Subject: [PATCH 1/2] configure: OrderService microservice - email queue and binding --- .../orderservice/config/RabbitMQConfig.java | 21 +++++++++++++++++++ .../src/main/resources/application.properties | 5 ++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/order-service/src/main/java/net/adiletkdev/orderservice/config/RabbitMQConfig.java b/order-service/src/main/java/net/adiletkdev/orderservice/config/RabbitMQConfig.java index d348dde..9442203 100644 --- a/order-service/src/main/java/net/adiletkdev/orderservice/config/RabbitMQConfig.java +++ b/order-service/src/main/java/net/adiletkdev/orderservice/config/RabbitMQConfig.java @@ -15,18 +15,30 @@ public class RabbitMQConfig { @Value("${rabbitmq.queue.order.name}") private String orderQueue; + @Value("${rabbitmq.queue.email.name}") + private String emailQueue; + @Value("${rabbitmq.exchange.name}") private String exchange; @Value("${rabbitmq.binding.routing.key}") private String orderRoutingKey; + @Value("${rabbitmq.binding.email.routing.key}") + private String emailRoutingKey; + // spring bean for queue - order queue @Bean public Queue orderQueue() { return new Queue(orderQueue); } + // spring bean for queue - email queue + @Bean + public Queue emailQueue() { + return new Queue(emailQueue); + } + // spring bean for exchange @Bean public TopicExchange exchange() { @@ -42,6 +54,15 @@ public Binding binding() { .with(orderRoutingKey); } + // spring bean binding between exchange and email queue using email routing key + @Bean + public Binding emailBinding() { + return BindingBuilder + .bind(emailQueue()) + .to(exchange()) + .with(emailRoutingKey); + } + // message converter @Bean public MessageConverter converter() { diff --git a/order-service/src/main/resources/application.properties b/order-service/src/main/resources/application.properties index 46c95d3..8e58232 100644 --- a/order-service/src/main/resources/application.properties +++ b/order-service/src/main/resources/application.properties @@ -1,3 +1,6 @@ rabbitmq.queue.order.name=order_queue rabbitmq.exchange.name=order_exchange -rabbitmq.binding.routing.key=order_routing_key \ No newline at end of file +rabbitmq.binding.routing.key=order_routing_key + +rabbitmq.queue.email.name=email_queue +rabbitmq.binding.email.routing.key=email_routing_key \ No newline at end of file From 6299be39d13ecc4dd05fb713a35bcdf3231cf777 Mon Sep 17 00:00:00 2001 From: Adilet K Date: Mon, 10 Jul 2023 20:51:16 +0600 Subject: [PATCH 2/2] add: OrderService microservice - send event to email queue --- .../adiletkdev/orderservice/publisher/OrderProducer.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/order-service/src/main/java/net/adiletkdev/orderservice/publisher/OrderProducer.java b/order-service/src/main/java/net/adiletkdev/orderservice/publisher/OrderProducer.java index 95a4e9b..565bacf 100644 --- a/order-service/src/main/java/net/adiletkdev/orderservice/publisher/OrderProducer.java +++ b/order-service/src/main/java/net/adiletkdev/orderservice/publisher/OrderProducer.java @@ -18,6 +18,9 @@ public class OrderProducer { @Value("${rabbitmq.binding.routing.key}") private String orderRoutingKey; + @Value("${rabbitmq.binding.email.routing.key}") + private String emailRoutingKey; + private RabbitTemplate rabbitTemplate; public OrderProducer(RabbitTemplate rabbitTemplate) { @@ -27,6 +30,10 @@ public OrderProducer(RabbitTemplate rabbitTemplate) { public void sendMessage(OrderEvent orderEvent) { LOGGER.info(String.format("Order event sent to RabbitMQ -> %s", orderEvent.toString())); + // send an order event to order queue rabbitTemplate.convertAndSend(exchange, orderRoutingKey, orderEvent); + + // send an order event to email queue + rabbitTemplate.convertAndSend(exchange, emailRoutingKey, orderEvent); } }