예제 #1
0
        /// <summary>
        /// Инициализирует новый экземпляр класса <see cref="RabbitChannel"/>.
        /// </summary>
        /// <param name="bus">
        /// The bus.
        /// </param>
        /// <param name="native">
        /// The native.
        /// </param>
        public RabbitChannel(RabbitBus bus, IModel native)
        {
            this.bus    = bus;
            this.Native = native;

            Logger.TraceFormat("Channel is opened.");

            this.Native.ModelShutdown += (model, reason) =>
            {
                this.isClosed = true;
                Logger.TraceFormat("Channel is closed due to \"{0}\".", reason.ToString());
            };
        }
예제 #2
0
        /// <summary>
        /// Инициализирует новый экземпляр класса <see cref="Producer"/>.
        /// </summary>
        /// <param name="bus">
        /// Конечная точка, для которой создается отправитель.
        /// </param>
        /// <param name="label">
        /// Метка сообщения, которая будет использоваться при отправлении сообщений.
        /// </param>
        /// <param name="routeResolver">
        /// Определитель маршрутов, по которым можно отсылать и получать сообщения.
        /// </param>
        /// <param name="confirmationIsRequired">
        /// Если <c>true</c> - тогда отправитель будет ожидать подтверждения о том, что сообщение было сохранено в брокере.
        /// </param>
        public Producer(RabbitBus bus, MessageLabel label, IRouteResolver routeResolver, bool confirmationIsRequired)
        {
            this.Channel                = bus.OpenChannel();
            this.Label                  = label;
            this.RouteResolver          = routeResolver;
            this.ConfirmationIsRequired = confirmationIsRequired;

            if (this.ConfirmationIsRequired)
            {
                this.confirmationTracker = new DefaultPublishConfirmationTracker(this.Channel);
                this.Channel.EnablePublishConfirmation();
                this.Channel.OnConfirmation(this.confirmationTracker.HandleConfirmation);
            }

            this.Failed += _ => ((IBusAdvanced)bus).Panic();
        }
예제 #3
0
 /// <summary>
 /// Инициализирует новый экземпляр класса <see cref="ProducerRegistry"/>.
 /// </summary>
 /// <param name="bus">
 /// The bus.
 /// </param>
 public ProducerRegistry(RabbitBus bus)
 {
     this._bus = bus;
 }
예제 #4
0
 /// <summary>
 /// Инициализирует новый экземпляр класса <see cref="ListenerRegistry"/>.
 /// </summary>
 /// <param name="bus">
 /// The bus.
 /// </param>
 public ListenerRegistry(RabbitBus bus)
 {
     this.bus = bus;
 }