コード例 #1
0
        /// <summary>
        /// Create subscriber from specified configuration key subscriber
        /// </summary>
        /// <param name="subscriberName"></param>
        /// <param name="callback"></param>
        /// <returns></returns>
        public IBrokerSubscription CreateSubscription(string subscriberName, Func <IBrokerContext, Task> callback, Func <IBrokerContext> factory = null)
        {
            if (factory == null)
            {
                factory = BrokerContextFactory;
            }

            if (!_brokerSubscriptionConfigurations.TryGetValue(subscriberName, out BrokerSubscriptionParameter subscriberParameter))
            {
                throw new Exceptions.InvalidConfigurationException($"configuration subscription {subscriberName}");
            }

            if (!_serverConfigurations.TryGetValue(subscriberParameter.ServerName, out ServerBrokerConfiguration server))
            {
                throw new Exceptions.InvalidConfigurationException($"configuration server {subscriberParameter.ServerName}");
            }

            IBroker _broker = new RabbitBroker(server)
            {
                Factory = this
            };
            var subscriber = (RabbitBrokerSubscription)_broker.Subscribe(subscriberParameter, callback, factory);

            return(subscriber);
        }
コード例 #2
0
            public Session(int watcher, RabbitBroker broker, BrokerSubscriptionParameter parameters, Func <IBrokerContext, Task> callback, Func <IBrokerContext> factoryContext)
            {
                _nextWarnTime   = RabbitClock.GetNow().AddSeconds((watcher * 2) + 1);
                _broker         = broker;
                _parameters     = parameters;
                _callback       = callback;
                _watcher        = watcher;
                _factoryContext = factoryContext;
                _callback       = callback;
                _session        = broker.GetChannel();
                _session.BasicQos(0, (ushort)parameters.MaxParallelism, false);

                var _consumer = new EventingBasicConsumer(_session);

                _consumer.Received += _consumer_Received;

                _act = () =>
                {
                    _consumer.Received -= _consumer_Received;
                };


                if (broker.Configuration.ConfigAllowed)
                {
                    SetUpBindings(parameters, _session);
                }

                _session.BasicConsume(parameters.StorageQueueName, false, _consumer);
            }
コード例 #3
0
        /// <summary>
        /// subscribe with custom business delegate
        /// </summary>
        /// <param name="broker"></param>
        /// <param name="parameters"></param>
        /// <param name="callback"></param>
        internal void Subscribe(RabbitBroker broker, BrokerSubscriptionParameter parameters, Func <IBrokerContext, Task> callback, Func <IBrokerContext> factory)
        {
            _broker     = broker;
            _parameters = parameters;
            _callback   = callback;
            _watcher    = parameters.WatchDog;
            _factory    = factory;

            CreateSession();
        }
コード例 #4
0
        /// <summary>
        /// Create broker server from specified configuration server name
        /// </summary>
        /// <param name="publisherName"></param>
        /// <returns></returns>
        public IBroker CreateServerBroker(string serverName)
        {
            if (!_serverConfigurations.TryGetValue(serverName, out ServerBrokerConfiguration server))
            {
                throw new Exceptions.InvalidConfigurationException($"configuration server {serverName}");
            }

            var _broker = new RabbitBroker(server)
            {
                Factory = this
            };

            return(_broker);
        }
コード例 #5
0
        /// <summary>
        /// Create publisher from specified configuration key publisher
        /// </summary>
        /// <param name="publisherName"></param>
        /// <returns></returns>
        public IBrokerPublisher CreatePublisher(string publisherName)
        {
            if (!_brokerPublishConfigurations.TryGetValue(publisherName, out BrokerPublishParameter publisher))
            {
                throw new Exceptions.InvalidConfigurationException($"configuration publisher {publisherName}");
            }

            if (!_serverConfigurations.TryGetValue(publisher.ServerName, out ServerBrokerConfiguration server))
            {
                throw new Exceptions.InvalidConfigurationException($"configuration server {publisher.ServerName}");
            }

            var _broker = new RabbitBroker(server)
            {
                Factory = this
            };
            var _publisher = _broker.GetPublisher(publisher);

            return(_publisher);
        }
コード例 #6
0
 public RabbitBrokerPublisher(RabbitBroker broker, BrokerPublishParameter brokerPublishParameters)
 {
     _broker = broker;
     BrokerPublishParameters = brokerPublishParameters;
     ServerConfiguration     = _broker.Configuration;
 }