/// <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); }
/// <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); } }