/// <summary> /// 根据程序集名获取消息队列信息 /// </summary> /// <param name="rabbitConfig">rabbit配置</param> /// <param name="assemblyName">程序集名</param> /// <param name="rpcClientAssemblyWrap">rpc客户端程序集包装</param> /// <returns>消息队列信息</returns> private static MessageQueueInfo GetMessageQueueByAssemblyName(RabbitConfigInfo rabbitConfig, string assemblyName, out RpcClientAssemblyWrapInfo rpcClientAssemblyWrap) { rpcClientAssemblyWrap = null; if (rabbitConfig == null || rabbitConfig.Rabbit.IsNullOrLength0()) { return(null); } foreach (var r in rabbitConfig.Rabbit) { if (r.Exchanges.IsNullOrCount0()) { continue; } foreach (var e in r.Exchanges) { if (e.Queues.IsNullOrCount0()) { continue; } foreach (var q in e.Queues) { if (q.RpcClientAssemblyInfos.IsNullOrLength0()) { continue; } var rpcClientAssembly = q.RpcClientAssemblyInfos.Where(p => p.Name == assemblyName).FirstOrDefault(); if (rpcClientAssembly == null) { continue; } rpcClientAssemblyWrap = new RpcClientAssemblyWrapInfo() { RpcClientAssembly = rpcClientAssembly, RabbitVirtualPath = r }; var msgQueue = e.ToMessageQueue(); msgQueue.AutoDelQueue = q.AutoDelQueue; msgQueue.Qos = q.Qos; msgQueue.Queue = q.Name; msgQueue.RoutingKeys = q.RoutingKeys; return(msgQueue); } } } return(null); }
/// <summary> /// 根据虚拟路径获取交换机列表 /// </summary> /// <param name="rabbitConfig">rabbit配置</param> /// <param name="virtualPath">虚拟路径</param> /// <returns>交换机列表</returns> public static IList <RabbitExchangeInfo> GetExchanges(this RabbitConfigInfo rabbitConfig, string virtualPath = RabbitConnectionInfo.DEFAULT_VIRTUAL_PATH) { if (rabbitConfig == null) { return(null); } var virtObj = rabbitConfig.Rabbit.Where(p => p.VirtualPath == virtualPath).FirstOrDefault(); if (virtObj == null) { return(null); } return(virtObj.Exchanges); }