public void BuildContainer(MessageBusInfo messageBusInfo, params object[] attributedParts) { if (messageBusInfo == null) { throw new ArgumentNullException("messageBusInfo"); } if (attributedParts == null) { throw new ArgumentNullException("attributedParts"); } try { using (var aggregateCatalog = new AggregateCatalog()) { using (var safeDirectoryCatalog = new SafeDirectoryCatalog(messageBusInfo.HandlerPath)) { var isolatedCatalog = new IsolatedAppDomainCatalog(safeDirectoryCatalog); aggregateCatalog.Catalogs.Add(isolatedCatalog); using (var container = new CompositionContainer(aggregateCatalog)) { container.ComposeParts(attributedParts); } } } } catch (Exception e) { // TODO: log but swallow. } }
private bool IsConfigurationValid(MessageBusInfo messageBusInfo) { if (messageBusInfo == null) { this._logger.LogInformation("Configuration is missing."); return(false); } if (messageBusInfo.HandlerPath == null) { this._logger.LogInformation("Handler path is missing in configuration."); return(false); } this._logger.LogInformation(string.Format("{0} {1}", "Using handler path ", messageBusInfo.HandlerPath)); if (messageBusInfo.QueueInfos.Count == 0 || messageBusInfo.QueueInfos == null) { this._logger.LogInformation("No queues configured."); return(false); } this._logger.LogInformation(string.Format("{0} {1}", messageBusInfo.QueueInfos.Count, "queues configured.")); messageBusInfo.QueueInfos.ForEach(queueInfo => this._logger.LogInformation(queueInfo.Path)); return(true); }
/// <summary> /// Retrieves the <see cref="MessageBusConfiguration"/> section from the host configuration and /// starts a <see cref="QueueController"/>. /// </summary> public void Start() { this._logger.LogInformation("Starting the bus manager..."); MessageBusInfo messageBusInfo = HostConfiguration.MessageBusConfiguration.Map(); if (!this.IsConfigurationValid(messageBusInfo)) { this._logger.LogInformation("Configuration is not valid, stopping bus manager."); return; } else { this._logger.LogInformation("Configuration is valid."); } this._partComposer.BuildContainer(messageBusInfo, this._handlerManager); if (!this._handlerManager.TryInitializion(this._logger)) { this._logger.LogInformation("The HandlerManager could not be initialized, stopping bus manager."); return; } this._queueController = new QueueManager(this.BuildQueues(messageBusInfo)); this._queueController.Initialize(); AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(this.ResolveEventHandler); }
private Dictionary <string, MessageQueue> BuildQueues(MessageBusInfo messageBusInfo) { var queues = new Dictionary <string, MessageQueue>(); messageBusInfo.QueueInfos.ForEach(queueInfo => { var queue = new MessageQueue(queueInfo.Path); queues.Add(queueInfo.Key, queue); }); return(queues); }
/// <summary> /// /// </summary> /// <param name="messageBusInfo"></param> public void Initialize(MessageBusInfo messageBusInfo) { throw new System.NotImplementedException(); }