public static RabbitMQChannelOptionsBuilder DeclareExchange( this RabbitMQChannelOptionsBuilder builder, string exchange, string type, bool durable = false, bool autoDelete = false, IDictionary <string, object> arguments = null, Action <RabbitMQExchangeOptionsBuilder> optionsAction = null) { if (exchange == null) { throw new ArgumentNullException(nameof(exchange)); } if (type == null) { throw new ArgumentNullException(nameof(type)); } builder.ExchangesOptionsFactories.Add(() => { var exchangeBuilder = new RabbitMQExchangeOptionsBuilder(exchange, type, durable, autoDelete, arguments); optionsAction?.Invoke(exchangeBuilder); return(exchangeBuilder.Build()); }); return(builder); }
public static RabbitMQChannelOptionsBuilder MapRoute <TMessage>(this RabbitMQChannelOptionsBuilder builder, string defaultRoutingKey) { var typeOptions = builder.MessageTypeOptionsProvider.Get <TMessage>(); typeOptions.DefaultRoutingKey = defaultRoutingKey; return(builder); }
public static RabbitMQChannelOptionsBuilder Map <TMessage>(this RabbitMQChannelOptionsBuilder builder, Func <TMessage, IMessageContent> formatter) { var typeOptions = builder.MessageTypeOptionsProvider.Get <TMessage>(); typeOptions.Formatter = formatter == null ? (Func <object, IMessageContent>)null : (src) => formatter((TMessage)src); return(builder); }
public static RabbitMQChannelOptionsBuilder Subscribe(this RabbitMQChannelOptionsBuilder builder, Type handlerType) { if (!MessageHandlersLoader.IsMessageHandler(handlerType)) { throw new ArgumentException("The supplied type is not a valid message handler.", nameof(handlerType)); } builder.SubscribersFactories.Add(services => MessageHandlersLoader.BuildMessageHandler(services, handlerType)); return(builder); }
public static RabbitMQChannelOptionsBuilder Subscribe(this RabbitMQChannelOptionsBuilder builder, Assembly assembly) { var subscriberFactories = MessageHandlersLoader.LoadFromAssembly(assembly); foreach (var subscriberFactory in subscriberFactories) { builder.SubscribersFactories.Add(subscriberFactory); } return(builder); }
public static RabbitMQChannelOptionsBuilder MapRoute <TMessage>(this RabbitMQChannelOptionsBuilder builder, string defaultRoutingKey, string defaultExchange, Func <TMessage, IMessageContent> formatter) { var typeOptions = builder.MessageTypeOptionsProvider.Get <TMessage>(); typeOptions.DefaultExchange = defaultExchange; typeOptions.DefaultRoutingKey = defaultRoutingKey; typeOptions.Formatter = formatter == null ? (Func <object, IMessageContent>)null : (src) => formatter((TMessage)src); return(builder); }
public static RabbitMQChannelOptionsBuilder DeclareQueue( this RabbitMQChannelOptionsBuilder builder, string queue = "", bool durable = false, bool exclusive = true, bool autoDelete = true, IDictionary <string, object> arguments = null, Action <RabbitMQQueueOptionsBuilder> optionsAction = null) { builder.QueuesOptionsFactories.Add(() => { var queueBuilder = new RabbitMQQueueOptionsBuilder(queue, durable, exclusive, autoDelete, arguments); optionsAction?.Invoke(queueBuilder); return(queueBuilder.Build()); }); return(builder); }
public static RabbitMQChannelOptionsBuilder AddRequestReply(this RabbitMQChannelOptionsBuilder builder, AcknowledgeMode acknowledgeMode, ExceptionMode exceptionMode) { RequestReplyController controller = null; builder .DeclareQueue(queueBuilder => queueBuilder .OnDeclare(queue => Task.Run(() => controller = new RequestReplyController(queue.Name))) .Subscribe(acknowledgeMode, exceptionMode, delivery => controller.OnDelivery(delivery)) ) .Map <RequestReplyModel>(model => { var context = controller.Request(model.SourceContent); model.Context = context; return(context.RequestContent); }); return(builder); }
public static RabbitMQBusServiceOptionsBuilder AddChannel(this RabbitMQBusServiceOptionsBuilder builder, object tag, Action <RabbitMQChannelOptionsBuilder> optionsAction) { if (optionsAction == null) { throw new ArgumentNullException(nameof(optionsAction)); } if (tag == null) { tag = new object(); } builder.ChannelsOptionsFactories.Add((messageTypeOptionsProviderBase) => { var channelOptionsBuilder = new RabbitMQChannelOptionsBuilder(builder.Services, tag, messageTypeOptionsProviderBase); optionsAction(channelOptionsBuilder); return(channelOptionsBuilder.Build()); }); return(builder); }
public static RabbitMQChannelOptionsBuilder Subscribe <THandler>(this RabbitMQChannelOptionsBuilder builder) where THandler : IMessageHandler <RabbitMQDelivery> => builder.Subscribe(typeof(THandler));
public static RabbitMQChannelOptionsBuilder AddRequestReply(this RabbitMQChannelOptionsBuilder builder, AcknowledgeMode acknowledgeMode) => builder.AddRequestReply(acknowledgeMode, ExceptionModeAttribute.DefaultMode);
public static RabbitMQChannelOptionsBuilder PrefetchPerConsumer(this RabbitMQChannelOptionsBuilder builder, ushort count) { builder.ConsumerPrefetchCount = count; return(builder); }
public static RabbitMQChannelOptionsBuilder DeclareQueue(this RabbitMQChannelOptionsBuilder builder, Action <RabbitMQQueueOptionsBuilder> optionsAction) => builder.DeclareQueue( queue: "", optionsAction: optionsAction );