public static void Init <T>(this IConsumerOf <T> target, IEnumerable <T> items) { foreach (var item in items) { target.Input.Post(item); } }
/// <summary> /// Registers a new consumer of messages with label <paramref name="label"/> /// </summary> /// <param name="label"> /// The label. /// </param> /// <param name="consumer"> /// The consumer. /// </param> /// <typeparam name="T"> /// The message payload type /// </typeparam> public override void RegisterConsumer <T>(MessageLabel label, IConsumerOf <T> consumer) { this.logger.Trace($"Registering consumer of [{typeof(T).Name}] in receiver of label [{label}]"); foreach (var listener in this.listeners) { listener.RegisterConsumer(label, consumer, this.Configuration.Validator); } }
/// <summary> /// Registers a new consumer of messages with label <paramref name="label"/> /// </summary> /// <param name="label"> /// The label. /// </param> /// <param name="consumer"> /// The consumer. /// </param> /// <typeparam name="T"> /// The message payload type /// </typeparam> public override void RegisterConsumer <T>(MessageLabel label, IConsumerOf <T> consumer) { this.logger.Trace($"Registering consumer of [{typeof(T).Name}] in receiver of label [{label}]"); foreach (var listener in this.listeners) { listener.RegisterConsumer(label, consumer, this.Configuration.Validator); var listenerLabels = string.Join(",", listener.AcceptedLabels); this.logger.Trace($"Listener of labels ({listenerLabels}) has registered a consumer of label [{label}]"); } }
public static void SendTo <T>(this IProducerOf <T> source, IConsumerOf <T> target, Predicate <T> filter = null) { if (filter != null) { source.Output.LinkTo(target.Input, new DataflowLinkOptions { PropagateCompletion = true }, filter); } else { source.Output.LinkTo(target.Input, new DataflowLinkOptions { PropagateCompletion = true }); } }
/// <summary> /// Добавляет еще одного обработчика сообщений. /// </summary> /// <param name="label"> /// Метка сообщения, которое может быть обработано. /// </param> /// <param name="consumer"> /// Обработчик сообщения. /// </param> /// <param name="validator"> /// Механизм проверки входящего сообщения. /// </param> /// <typeparam name="T"> /// Тип входящего сообщения. /// </typeparam> public void RegisterConsumer <T>(MessageLabel label, IConsumerOf <T> consumer, IMessageValidator validator) where T : class { ConsumingAction consumingAction = delivery => { IConsumingContext <T> context = delivery.BuildConsumingContext <T>(label); if (validator != null) { validator.Validate(context.Message).ThrowIfBroken(); } else { this.validatorRegistry.Validate(context.Message); } consumer.Handle(context); }; this.consumers[label] = consumingAction; }
/// <summary> /// Добавляет еще одного обработчика сообщений. /// </summary> /// <param name="label"> /// Метка сообщения, которое может быть обработано. /// </param> /// <param name="consumer"> /// Обработчик сообщения. /// </param> /// <param name="validator"> /// Механизм проверки входящего сообщения. /// </param> /// <typeparam name="T"> /// Тип входящего сообщения. /// </typeparam> public void RegisterConsumer <T>(MessageLabel label, IConsumerOf <T> consumer, IMessageValidator validator) where T : class { ConsumingAction consumingAction = delivery => { IConsumingContext <T> context = delivery.BuildConsumingContext <T>(label); if (validator != null) { validator.Validate(context.Message).ThrowIfBroken(); } else { this.validatorRegistry.Validate(context.Message); } var sw = Stopwatch.StartNew(); consumer.Handle(context); this.MetricsCollector?.Histogram("contour.rmq.consuming.duration", sw.ElapsedMilliseconds, 1D, new[] { "endpoint:" + this.busContext.Endpoint.Address, "label:" + label.ToString() }); }; this.consumers[label] = consumingAction; }
/// <summary> /// Добавляет еще одного обработчика сообщений. /// </summary> /// <param name="label"> /// Метка сообщения, которое может быть обработано. /// </param> /// <param name="consumer"> /// Обработчик сообщения. /// </param> /// <param name="validator"> /// Механизм проверки входящего сообщения. /// </param> /// <typeparam name="T"> /// Тип входящего сообщения. /// </typeparam> public void RegisterConsumer <T>(MessageLabel label, IConsumerOf <T> consumer, IMessageValidator validator) where T : class { ConsumingAction consumingAction = delivery => { IConsumingContext <T> context = delivery.BuildConsumingContext <T>(label); if (validator != null) { validator.Validate(context.Message).ThrowIfBroken(); } else { this.validatorRegistry.Validate(context.Message); } this.logger.Trace( m => m($"{typeof(T)}: получил сообщение " + $"[{JsonConvert.SerializeObject(context.Message.Payload)}] на обработку")); consumer.Handle(context); }; this.consumers[label] = consumingAction; }
/// <summary> /// The register consumer. /// </summary> /// <param name="label"> /// The label. /// </param> /// <param name="consumer"> /// The consumer. /// </param> /// <typeparam name="T"> /// </typeparam> public abstract void RegisterConsumer <T>(MessageLabel label, IConsumerOf <T> consumer) where T : class;
/// <summary>Регистрирует обработчик входящего сообщения.</summary> /// <param name="consumer">Обработчик входящего сообщения.</param> /// <typeparam name="T">Тип обрабатываемого сообщения.</typeparam> /// <returns>Конфигуратор получателя с установленным обработчиком входящих сообщений.</returns> public IReceiverConfigurator <T> ReactWith <T>(IConsumerOf <T> consumer) where T : class { this.ReceiverRegistration = l => l.RegisterConsumer(this.Label, consumer); return(new TypedReceiverConfigurationDecorator <T>(this)); }
/// <summary> /// The register consumer. /// </summary> /// <param name="label"> /// The label. /// </param> /// <param name="consumer"> /// The consumer. /// </param> /// <typeparam name="T"> /// </typeparam> public override void RegisterConsumer <T>(MessageLabel label, IConsumerOf <T> consumer) { Logger.Trace(m => m("Registering consumer of [{0}] for receiver of [{1}].", typeof(T).Name, label)); this.listener.RegisterConsumer(label, consumer, this.Configuration.Validator); }
public CachingConsumerOf(IConsumerOf <T> consumer, CacheConfiguration cacheConfiguration) { this.consumer = consumer; this.cacheConfiguration = cacheConfiguration; }
/// <summary>Регистрирует обработчик входящего сообщения.</summary> /// <param name="consumer">Обработчик входящего сообщения.</param> /// <typeparam name="T1">Тип обрабатываемого сообщения.</typeparam> /// <returns>Конфигуратор получателя с установленным обработчиком входящих сообщений.</returns> public IReceiverConfigurator <T1> ReactWith <T1>(IConsumerOf <T1> consumer) where T1 : class { return(this.configuration.ReactWith(consumer)); }
/// <summary>Регистрирует обработчик входящего сообщения.</summary> /// <param name="consumer">Обработчик входящего сообщения.</param> /// <returns>Конфигуратор получателя с установленным обработчиком входящих сообщений.</returns> public IReceiverConfigurator <T> ReactWith(IConsumerOf <T> consumer) { this.configuration.ReactWith(consumer); return(this); }
public void Register <T>(IConsumerOf <T> handler, HandlerMode mode) where T : Message { _handlers.Add(new KeyValuePair <Type, HandlerItem>(typeof(IConsumerOf <T>), new HandlerItem(typeof(T), handler, mode))); }
public void Register <T>(IConsumerOf <T> handler) where T : Message { Register(handler, HandlerMode.Explicit); }
// not sure if I really want/need these public static void Init <T>(this IConsumerOf <T> target, T item) { target.Input.Post(item); }