Exemplo n.º 1
0
        /// <summary>
        /// 注册一个指定了Host的特定routerKey的拉消费者
        /// </summary>
        /// <param name="routerKey">注册接受特定的routerKey的消息</param>
        /// <param name="queueName">将特定的routerKey的消息接受到自己的queueName中</param>
        /// <param name="host">特定的host服务器</param>
        /// <param name="autoDelete">是否自动删除autoDelete,一般不要在注册的时候设置为true,在处理完消息的回调中删除消息</param>
        public static GrantPullConsumer <MQProtocol <M> > PullConsumeRegister(string routerKey, string queueName, VirtualHost host, bool autoDelete)
        {
            GrantPullConsumer <MQProtocol <M> > c = new GrantPullConsumer <MQProtocol <M> >(ExchangeConst.DefaultExchange, routerKey, queueName, autoDelete, host);

            consumers.Add(c);
            c.Register();
            return(c);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Initializes a new instance of the  class.
        /// 创建接受消息实例
        /// </summary>
        /// <param name="groups">接受消息的所有Ttid</param>
        /// <param name="pull">拉消息</param>
        public AuditMessageMgr(bool pull, params string[] groups)
        {
            var host = MQHostConfigManager.GetHost("Audit");

            if (host == null)
            {
                throw new Exception("RabbitMQ 没有配置  Audit 主机!!");
            }

            if (!pull)
            {
                // 订阅所有的routerKey
                foreach (var item in groups)
                {
                    GrantMQManager <T> .ConsumeRegister(
                        GetRouter(item),
                        GetQueue(item),
                        host,
                        true,
                        (MQProtocol <T> m, Exception ex) =>
                    {
                        if (this.OnAuditMessageReceive != null)
                        {
                            return(this.OnAuditMessageReceive(m, ex));
                        }
                        return(false);    // 如果没有回调,不能随意删除消息
                    });
                }
            }
            else
            {
                if (groups.Length > 0)
                {
                    Debug.Assert(true);
                }

                var item = typeof(T).Name;

                // 订阅所有的routerKey
                this._consumer = GrantMQManager <T> .PullConsumeRegister(
                    GetRouter(item),
                    GetQueue(item),
                    host,
                    true);
            }
        }