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