protected RabbitCore(IConnectionWrapper connection, DispatchType dispatchType, string name, bool autoDelete, IDictionary <string, object> arguments = null) { DispatchType = dispatchType; Name = name; Connection = connection; AutoDelete = autoDelete; Arguments = arguments; ModelWrapper = Connection.CreateModel(); SetupQueue(); }
/// <summary> /// 异步发布消息(通过连接池来实现) /// </summary> /// <typeparam name="T"></typeparam> /// <param name="queue"></param> /// <param name="msg"></param> /// <returns></returns> public async Task PublishInConnectionPoolAsync <T>(string queue, T msg) { #region 异步发布消息(通过连接池) var connectionFactory = RabbitMQHelper.CreateConnectFactory(constants); IModelWrapper iModel = ConnectionPool.GetOrCreateChannel(connectionFactory); connectionFactory.RequestedChannelMax = (ushort)constants.MaxPoolSize; IBasicProperties props = iModel.Model.CreateBasicProperties(); props.DeliveryMode = 2; props.Headers = new Dictionary <string, object>(); var msgBytes = Serialize(new BaseMessage <T>(msg)); iModel.Model.BasicPublish(constants.BUSINESS_EXCHANGE, constants.TAG + queue, props, msgBytes); iModel.SetNotBusy(); #endregion }