/// <summary>
        /// 根据交换机获取消息队列信息
        /// </summary>
        /// <param name="exchange">交换机</param>
        /// <param name="virtualPath">虚拟路径</param>
        /// <returns>消息队列信息</returns>
        public RabbitMessageQueueInfo ReaderByExchange(string exchange, string virtualPath = RabbitConnectionInfo.DEFAULT_VIRTUAL_PATH)
        {
            var extend = ConfigUtil.CreateContainerVirtualPathDic(virtualPath);

            return(GetMessagQueueInfoByCondition(x =>
            {
                return RabbitUtil.IsTwoExchangeEqual(exchange, x.Exchange);
            }, extend));
        }
        /// <summary>
        /// 根据队列获取消息队列信息
        /// </summary>
        /// <param name="queue">队列</param>
        /// <param name="virtualPath">虚拟路径</param>
        /// <returns>消息队列信息</returns>
        public RabbitMessageQueueInfo ReaderByQueue(string queue, string virtualPath = RabbitConnectionInfo.DEFAULT_VIRTUAL_PATH)
        {
            if (string.IsNullOrWhiteSpace(queue))
            {
                return(null);
            }

            var extend = ConfigUtil.CreateContainerVirtualPathDic(virtualPath);

            return(GetMessagQueueInfoByCondition(x =>
            {
                return queue.Equals(x.Queue);
            }, extend));
        }
        /// <summary>
        /// 根据交换机和队列获取消息队列信息
        /// </summary>
        /// <param name="exchange">交换机</param>
        /// <param name="queue">队列</param>
        /// <param name="virtualPath">虚拟路径</param>
        /// <returns>消息队列信息</returns>
        protected RabbitMessageQueueInfo ReaderByExchangeAndQueue(string exchange, string queue, string virtualPath = RabbitConnectionInfo.DEFAULT_VIRTUAL_PATH)
        {
            if (string.IsNullOrWhiteSpace(exchange) || string.IsNullOrWhiteSpace(queue))
            {
                return(null);
            }

            var extend = ConfigUtil.CreateContainerVirtualPathDic(virtualPath);

            return(GetMessagQueueInfoByCondition(x =>
            {
                return RabbitUtil.IsTwoExchangeEqual(exchange, x.Exchange) && queue.Equals(x.Queue);
            }, extend));
        }
Пример #4
0
 /// <summary>
 /// 构造方法
 /// 初始化各个对象以便就绪
 /// </summary>
 /// <param name="channel">渠道</param>
 /// <param name="queueOrOtherIdentify">队列或其他标识</param>
 /// <param name="messageQueueInfoFactory">消息队列信息工厂</param>
 /// <param name="virtualPath">虚拟路径</param>
 public RabbitRpcServer(IModel channel, string queueOrOtherIdentify, IMessageQueueInfoFactory messageQueueInfoFactory, string virtualPath = RabbitConnectionInfo.DEFAULT_VIRTUAL_PATH)
     : this(channel, RabbitMessageQueueInfo.From(messageQueueInfoFactory.Create(queueOrOtherIdentify, ConfigUtil.CreateContainerVirtualPathDic(virtualPath))))
 {
 }
 /// <summary>
 /// 根据队列获取消息队列信息
 /// </summary>
 /// <param name="queue">队列</param>
 /// <param name="virtualPath">虚拟路径</param>
 /// <returns>消息队列信息</returns>
 public RabbitMessageQueueInfo ReaderByQueue(string queue, string virtualPath = RabbitConnectionInfo.DEFAULT_VIRTUAL_PATH)
 {
     return(RabbitMessageQueueUtil.ReaderByQueue(queue, ReaderAll(ConfigUtil.CreateContainerVirtualPathDic(virtualPath))));
 }
        /// <summary>
        /// 从配置里验证消息队列信息
        /// </summary>
        /// <param name="queueOrOtherIdentify">队列或其他标识</param>
        /// <returns>Rabbit消息队列信息</returns>
        private RabbitMessageQueueInfo ValidateMessageQueueInfoFromConfig(string queueOrOtherIdentify)
        {
            if (MessageQueueInfoFactory == null)
            {
                MessageQueueInfoFactory = new RabbitMessageQueueInfoConfigFactory();
            }

            RabbitMessageQueueInfo rabbitMessageQueueInfo = MessageQueueInfoFactory.Create(queueOrOtherIdentify, ConfigUtil.CreateContainerVirtualPathDic(virtualPath)) as RabbitMessageQueueInfo;

            ValidateUtil.ValidateNull2(rabbitMessageQueueInfo, string.Format("队列或其他标识[{0}]在配置里不存在", queueOrOtherIdentify));

            return(rabbitMessageQueueInfo);
        }