using EasyNetQ;
using HKLib.RabbitMQ.Config;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;

namespace HKLib.RabbitMQ.Subscriber
{
    public class ServiceQueryExcute
    {
        public static ServiceQueryExcute QueryExcute => new Lazy<ServiceQueryExcute>().Value;
        public void ExtuteMQ<TImpl,T>(string Key,MQEnum Type) where TImpl : IAccept, new()
        {
            Task.Run(() =>
            {
                AcceptEntity accept = new AcceptEntity();
                if (Type == MQEnum.Push)
                {
                    accept.SendType = MQEnum.Push;
                    accept.ExchangeName = "Message.Direct";
                    accept.QueeName = "Meesage.DirectQuene";
                    accept.RouteName = Key;
                }
                else if (Type == MQEnum.Sub)
                {
                    accept.SendType = MQEnum.Sub;
                    accept.ExchangeName = "Message.Fanout";
                    accept.QueeName = "Meesage.FanoutQuene";
                }
                else
                {
                    accept.SendType = MQEnum.Top;
                    accept.ExchangeName = "Message.Topic";
                    accept.QueeName = "Meesage.FanoutQuene";
                    accept.RouteName = Key;
                }
                MQFactory.Subscriber<TImpl, T>(accept);
            });
        }
    }
}
