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
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand All @@ -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() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -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);
}
}
5 changes: 4 additions & 1 deletion order-service/src/main/resources/application.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
rabbitmq.queue.order.name=order_queue
rabbitmq.exchange.name=order_exchange
rabbitmq.binding.routing.key=order_routing_key
rabbitmq.binding.routing.key=order_routing_key

rabbitmq.queue.email.name=email_queue
rabbitmq.binding.email.routing.key=email_routing_key