MessageProducer.java 2.23 KB
package com.topdraw.mq.producer;

import com.topdraw.config.LocalConstants;
import com.topdraw.mq.config.RabbitMqConfig;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;


@Component
@Slf4j
public class MessageProducer {


    @Autowired
    private AmqpTemplate amqpTemplate;


    @Value("${service.platform}")
    private String platformType;

    public void sendMessage(String msg,String exchangeName){

        // 管理侧
        if (platformType.equalsIgnoreCase(LocalConstants.PLATFORM_TYPE_MANAGEMENT)) {
            if (StringUtils.isEmpty(exchangeName)) {
                exchangeName = RabbitMqConfig.UC_QUEUE_DIRECT_CCC;
            }
            this.sendDirectMessage(msg,exchangeName);
        }

        // 服务侧
        if (platformType.equalsIgnoreCase(LocalConstants.PLATFORM_TYPE_SERVICE)) {
            if (StringUtils.isEmpty(exchangeName)) {
                exchangeName = RabbitMqConfig.UC_QUEUE_DIRECT_BBB;
            }
            this.sendDirectMessage(msg,exchangeName);
        }

    }

    /**
     * 广播
     * @param msg
     * @param exchangeName
     * @author XiangHan
     * @date 2021/9/7 11:10 上午
     */
    private void sendFanoutMessage(String msg,String exchangeName) {
        if (StringUtils.isEmpty(exchangeName)) {
            exchangeName = RabbitMqConfig.UC_EXCHANGE_FANOUT;
        }
        amqpTemplate.convertAndSend(exchangeName, "", msg);
        log.info("send sendFanoutMessage msg || entityType: {} || msg:{} ", msg);
    }

    /**
     * 直连
     * @param msg
     * @param queueName
     * @author XiangHan
     * @date 2021/9/7 11:10 上午
     */
    private void sendDirectMessage(String msg,String queueName) {

        amqpTemplate.convertAndSend(queueName, msg);
        log.info("send sendFanoutMessage msg || entityType: {} || msg:{} ", msg);
    }

    /**
     * 发送
     * @param msg
     * @author XiangHan
     * @date 2021/9/7 11:10 上午
     */
    public void sendMessage(String msg) {
        this.sendMessage(msg,null);
    }
}