MemberServiceConsumer.java 2.21 KB
package com.topdraw.mq.consumer;

import com.topdraw.config.ServiceEnvConfig;
import com.topdraw.mq.config.RabbitMqConfig;
import com.topdraw.mq.domain.DataSyncMsg;
import com.topdraw.mq.domain.TableOperationMsg;
import com.topdraw.util.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.core.AcknowledgeMode;
import org.springframework.amqp.core.ExchangeTypes;
import org.springframework.amqp.rabbit.annotation.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
@Slf4j
public class MemberServiceConsumer {

    private static final Logger LOG = LoggerFactory.getLogger(MemberServiceConsumer.class);

    @Autowired
    AutoRoute autoUser;

    /**
     * @param content
     * @description 基础数据同步
     * @author Hongyan Wang
     * @date 2021/9/7 11:26 上午
     */
    @RabbitHandler
//    @RabbitListener(queues = "#{memberServiceConsumer.platform()}")
    @RabbitListener(bindings = {
            @QueueBinding(value = @Queue(value = "#{memberServiceConsumer.platform()}"),
                    exchange = @Exchange(value = RabbitMqConfig.UC_EXCHANGE_FANOUT,type = ExchangeTypes.FANOUT))
    })
    public void memberServiceFanoutConsumer(String content) {
        try {
            log.info(" receive dataSync msg , content is : {} ", content);
            TableOperationMsg dataSyncMsg = JSONUtil.parseMsg2Object(content, TableOperationMsg.class);
            autoUser.route(dataSyncMsg);
            LOG.info("memberServiceFanoutConsumer ====>>>> "+dataSyncMsg);
        } catch (Exception e) {
            log.error(" LocalDataSyncMsg || msg:{} || error:{} ", content, e.getMessage());
        }
    }

    /**
     * @return java.lang.String
     * @description 根据环境获取队列名称
     * @author Hongyan Wang
     * @date 2021/9/8 4:00 下午
     */
    public String platform() {
        String platform = "";
        if (ServiceEnvConfig.isMobile()) {
            platform = RabbitMqConfig.UC_QUEUE_FANOUT_WEIXIN;
        } else {
            if (ServiceEnvConfig.isVis()) platform = RabbitMqConfig.UC_QUEUE_FANOUT_IPTV;
        }
        return platform;
    }
}