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/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); } } 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