コード例 #1
0
        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.
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="messageBusInfo"></param>
 public void Initialize(MessageBusInfo messageBusInfo)
 {
     throw new System.NotImplementedException();
 }