
com.infusers.core.rabbitmq.impl.RabbitMQSender Maven / Gradle / Ivy
package com.infusers.core.rabbitmq.impl;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import com.infusers.core.rabbitmq.RabbitMQProperties;
import com.infusers.core.rabbitmq.dto.MessageSender;
@Service
public class RabbitMQSender implements MessageSender {
private static final Logger log = LogManager.getLogger(RabbitMQSender.class);
private static final String CLASS_NAME = "RabbitMQSender";
@Autowired
private AmqpTemplate rabbitTemplate;
@Autowired
private RabbitMQProperties properties;
@Value("${rabbitmq.exchange.name}")
private String exchange;
@Override
public void send(T request, String queueName) {
log.debug(CLASS_NAME+".send()-->Sending message to queue: " + queueName+" :: request = "+request);
String routingKey = properties.getQueues().stream()
.filter(q -> q.getName().equals(queueName))
.findFirst()
.map(RabbitMQProperties.QueueConfig::getRoutingKey)
.orElseThrow(() -> new IllegalArgumentException("Queue not found: " + queueName));
log.debug(CLASS_NAME+".send()-->routingKey: " + routingKey+" :: request = "+request);
rabbitTemplate.convertAndSend(properties.getExchange().getName(), routingKey, request);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy