package com.yanzuoguang.mq.base;

import com.yanzuoguang.mq.base.consumer.ConsumerSimpleMessageListenerContainer;
import org.springframework.amqp.core.AcknowledgeMode;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.ChannelAwareMessageListener;
import org.springframework.amqp.rabbit.core.RabbitAdmin;
import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;
import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

@Component
public class MqConsumeDynamic {

    @Resource
    private ConnectionFactory connectionFactory;

    @Resource
    private RabbitAdmin rabbitAdmin;

    @Value("${yzg.onOfConsumer:10}")
    private int onOfConsumer;

    public SimpleMessageListenerContainer init(String queueName, ChannelAwareMessageListener messageListener) {
        ConsumerSimpleMessageListenerContainer container = new ConsumerSimpleMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        container.setAcknowledgeMode(AcknowledgeMode.MANUAL);
        container.setQueueNames(queueName);
        container.setConcurrentConsumers(onOfConsumer);
        container.setMessageListener(new MessageListenerAdapter(messageListener));
        container.start();
        return container;
    }
}