All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.infusers.core.rabbitmq.impl.RabbitMQSender Maven / Gradle / Ivy

There is a newer version: 2025.03.0001
Show newest version
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