
        #region Ŷ
        /*
        static string _retryExchangeName = $"{Kit.AppName}.Retry";

        IModel CreateDeadChannel(string p_eventName)
        {
            var channel = _conn.CreateModel();

            // 
            Dictionary<String, Object> args = new Dictionary<String, Object>();
            // Ϣʱܾ󳤶ʱɾȻƶָŽ
            args.Add("x-dead-letter-exchange", _retryExchangeName);
            // ٸroutingkeyƵqueue
            args.Add("x-dead-letter-routing-key", p_eventName);
            // еϢ30ᱻɾ
            args.Add("x-message-ttl", 30000);

            // Ϣ
            // exclusiveǷΪУֻ״ӿɼӶϿʱɾ
            // autoDeletetrueʱûκζߵĻöлᱻԶɾֶʱ
            // durableǷ־û
            channel.QueueDeclare(p_eventName, durable: true, exclusive: false, autoDelete: false, arguments: args);

            var consumer = new EventingBasicConsumer(channel);
            consumer.Received += async (s, e) =>
            {
                await ProcessEvent(e);
                channel.BasicAck(e.DeliveryTag, false);
            };

            // 
            // һ 0ϢĴСκ
            //  1ϢһһѣûȷѣϢ
            //  falseΪconsumer 
            channel.BasicQos(0, 1, false);

            // Ҫ뽫autoAckΪfalse
            channel.BasicConsume(queue: p_eventName, autoAck: false, consumer: consumer);

            channel.CallbackException += (s, e) =>
            {
                //_consumerChannels[p_eventName].Dispose();
                //_consumerChannels[p_eventName] = CreateNormalChannel(p_queueName, p_routeKey);
            };
            return channel;
        }

        IModel CreateRetryChannel(string p_queueName)
        {
            var channel = _conn.CreateModel();
            // Ϣ
            channel.QueueDeclare(p_queueName, durable: true, exclusive: false, autoDelete: false);

            var consumer = new EventingBasicConsumer(channel);
            consumer.Received += async (s, e) =>
            {
                await ProcessEvent(e);
                channel.BasicAck(e.DeliveryTag, false);
            };

            // 
            channel.BasicQos(0, 1, false);

            // Ҫ뽫autoAckΪfalse
            channel.BasicConsume(queue: p_queueName, autoAck: false, consumer: consumer);
            channel.CallbackException += (s, e) =>
            {

            };
            return channel;
        }*/
        #endregion