RabbitmqUtil.java 2.47 KB
Newer Older
谢恒's avatar
谢恒 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
package com.hs.admin.util;

import com.hs.admin.base.RabbitMqConstant;
import com.hs.admin.dao.JcbDao;
import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.Channel;
import com.sun.org.apache.bcel.internal.generic.NEW;
import org.springframework.amqp.rabbit.connection.Connection;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeoutException;

/**
 * @author xieheng
 */
@Component
public class RabbitmqUtil {
    @Resource
    RabbitTemplate rabbitTemplate;
    @Resource
    JcbDao jcbDao;

    String[] queueNames;

    public String[] getQueueNames() {
        return queueNames;
    }

    public void setQueueNames(String[] queueNames) {
        this.queueNames = queueNames;
    }

    /**
     * @description:新增队列
     * @author: XieHeng
     * @param: queueName
     * @return: void
     * @date: 2021/5/25 1:49 下午
     */
    public void newQueue(String queueName) {
        ConnectionFactory connectionFactory = rabbitTemplate.getConnectionFactory();
        Connection connection = connectionFactory.createConnection();
        Channel channel = connection.createChannel(true);
        try {
            channel.queueDeclare(queueName, false, false, false, null);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                channel.close();
                connection.close();
            } catch (Exception e) {
                e.printStackTrace();
            }

        }
    }

    @PostConstruct
    public void getJcbIdList() {
        List<String> jcbIdList = jcbDao.getJcbIdList();
        if (!CollectionUtils.isEmpty(jcbIdList)) {
            List<String> list = new ArrayList<>();
            for (String jcbId : jcbIdList) {
                String queueName = RabbitMqConstant.JOB_QUEUE + jcbId;
                newQueue(queueName);
                list.add(queueName);
            }
            queueNames = list.toArray(new String[list.size()]);
        } else {
            queueNames = new String[]{RabbitMqConstant.JOB_QUEUE};
        }
    }
}