private static string CreateQueue(IModel model, SubscriberConfigurator configurator) { QueueDeclareOk queueDeclare; var arguments = new Dictionary <string, object>(); if (configurator.MaxPriority > 0) { arguments.Add("x-max-priority", configurator.MaxPriority); } if (!string.IsNullOrEmpty(configurator.QueueName)) { if (configurator.AutoCreate) { if (configurator.Durable) { // exclusive: Can only be accessed by the current connection. (default false) // https://github.com/EasyNetQ/EasyNetQ/wiki/The-Advanced-API model.QueueDeclare(configurator.QueueName, true, false, false, arguments); } else { model.QueueDeclare(configurator.QueueName, false, true, true, arguments); } } return(configurator.QueueName); } queueDeclare = model.QueueDeclare("", false, true, true, arguments); return(queueDeclare.QueueName); }
public SubscriberBase(IModel model, string queue, IBasicConsumer consumer, SubscriberConfigurator configurator) { _model = model; _queue = queue; _consumer = consumer; _configurator = configurator; }
private MessageConsumer CreateConsumer(IModel model, SubscriberConfigurator configurator) { if (configurator.TransactionalDelivery) { return(new TransactionalMessageConsumer(BusId, model, _messageHelper, _sendHelper, configurator.Serializers, configurator.ErrorSubscriber, configurator.TaskScheduler, configurator.ReceiveSelfPublish, configurator.NeverReply)); } return(new MessageConsumer(BusId, model, _messageHelper, _sendHelper, configurator.Serializers, configurator.ErrorSubscriber, configurator.TaskScheduler, configurator.ReceiveSelfPublish, configurator.NeverReply)); }
public IReceiver CreateReceiver(Action <ISubscriberConfigurator> configure = null) { SubscriberConfigurator configurator = _createSubscriberConfigurator(configure); IModel model = _connection.CreateModel(); string queue = CreateQueue(model, configurator); return(new Receiver(model, BusId, queue, _messageHelper, configurator)); }
private static string CreateQueue(IModel model, SubscriberConfigurator configurator) { if (!string.IsNullOrEmpty(configurator.QueueName)) { return(configurator.QueueName); } QueueDeclareOk queueDeclare = model.QueueDeclare("", false, true, true, new Dictionary <string, object>()); return(queueDeclare.QueueName); }
private static SubscriberConfigurator CreateConfigurator(Action <ISubscriberConfigurator> configure) { SubscriberConfigurator configurator = new SubscriberConfigurator(); if (configure != null) { configure(configurator); } return(configurator); }
internal override IInputChannel OnCreateInputChannel(SubscriberConfigurator configurator) { IInputChannel inputChannel = CreateInputChannel(configurator.BufferManager, configurator.QueueName); if (inputChannel == null) { throw new NoIncomingConnectionAcceptedException(); } return(inputChannel); }
public IAsyncSubscriber CreateAsyncSubscriber(Action <ISubscriberConfigurator> configure = null) { SubscriberConfigurator configurator = _createSubscriberConfigurator(configure); IModel model = _connection.CreateModel(); string queue = CreateQueue(model, configurator); IMessageConsumer consumer = CreateConsumer(model, configurator); var helper = CreateSubscriptionHelper(consumer, model, queue, configurator); return(new AsyncSubscriber(model, queue, consumer, helper, configurator)); }
public ISubscription CreateMonitor(Action <RawBusMessage> monitor) { SubscriberConfigurator configurator = _createSubscriberConfigurator(null); IModel model = _connection.CreateModel(); string queue = CreateQueue(model, configurator); model.QueueBind(queue, configurator.Exchange, configurator.RoutingKey); var consumer = new MessageMonitorConsumer(_messageHelper, monitor); return(new MessageMonitor(model, queue, consumer, configurator)); }
public ISubscription RegisterSubscription <T>(T instance, Action <ISubscriberConfigurator> configure = null) { SubscriberConfigurator configurator = _createSubscriberConfigurator(configure); IModel model = _connection.CreateModel(); string queue = CreateQueue(model, configurator); IMessageConsumer consumer = CreateConsumer(model, configurator); ISubscriptionHelper helper = CreateSubscriptionHelper(consumer, model, queue, configurator); return(new Subscription(model, queue, consumer, instance, configurator, helper)); }
public ISubscription CreateMonitor(Action <SerializedBusMessage> monitor, Action <ISubscriberConfigurator> configure = null, IEnumerable <BusHeader> filterHeaders = null) { SubscriberConfigurator configurator = _createSubscriberConfigurator(configure); IModel model = _connection.CreateModel(); string queue = CreateQueue(model, configurator); model.QueueBind(queue, configurator.Exchange, configurator.RoutingKey, filterHeaders ?? Enumerable.Empty <BusHeader>()); DefaultBasicConsumer consumer; if (configurator.TransactionalDelivery) { consumer = new TransactionalMessageMonitorConsumer(model, _messageHelper, monitor, configurator.ExceptionFilter); } else { consumer = new MessageMonitorConsumer(model, _messageHelper, monitor, configurator.ErrorSubscriber); } return(new MessageMonitor(model, queue, consumer, configurator)); }
public Subscription(IModel model, string queue, IMessageConsumer consumer, object instance, SubscriberConfigurator configurator, ISubscriptionHelper helper) : base(model, queue, consumer, configurator) { helper.RegisterSubscription(instance); }
internal abstract IInputChannel OnCreateInputChannel(SubscriberConfigurator configurator);
private static ISubscriptionHelper CreateSubscriptionHelper(IMessageConsumer consumer, IModel model, string queue, SubscriberConfigurator configurator) { ISubscriptionHelper helper = new SubscriptionHelper((type, filterInfo, handler) => { if (consumer.Register(type, filterInfo, handler)) { model.QueueBind(queue, configurator.Exchange, configurator.RoutingKey, filterInfo); return(true); } return(false); }); return(helper); }
public Subscriber(IModel model, string queue, IMessageConsumer consumer, ISubscriptionHelper helper, SubscriberConfigurator configurator) : base(model, queue, consumer, configurator) { _helper = helper; }
public RabbitMQBus(Action <IBusConfigurator> busConfigurator = null) { BusConfigurator busConfiguration = new BusConfigurator(); if (busConfigurator != null) { busConfigurator(busConfiguration); } BusId = busConfiguration.BusId; _exchange = "amq.headers"; string username = "******"; string password = "******"; if (!string.IsNullOrEmpty(busConfiguration.ConnectionString.Endpoint)) { _exchange = busConfiguration.ConnectionString.Endpoint; } if (!string.IsNullOrEmpty(busConfiguration.ConnectionString.Username)) { username = busConfiguration.ConnectionString.Username; } if (!string.IsNullOrEmpty(busConfiguration.ConnectionString.Password)) { password = busConfiguration.ConnectionString.Password; } ConnectionFactory factory = new ConnectionFactory { HostName = busConfiguration.ConnectionString.Host, Port = busConfiguration.ConnectionString.Port, AutomaticRecoveryEnabled = true, TopologyRecoveryEnabled = true, UserName = username, Password = password, VirtualHost = busConfiguration.ConnectionString.VirtualHost }; _connection = factory.CreateConnection(); _createSubscriberConfigurator = configure => { SubscriberConfigurator configurator = new SubscriberConfigurator(_exchange, busConfiguration.ErrorSubscriber, busConfiguration.ReceiveSelfPublish); if (configure != null) { configure(configurator); } return(configurator); }; _createPublisherConfigurator = configure => { PublisherConfigurator configurator = new PublisherConfigurator(_exchange, busConfiguration.ErrorHandler); if (configure != null) { configure(configurator); } return(configurator); }; }
public MessageMonitor(IModel model, string queue, IBasicConsumer consumer, SubscriberConfigurator configurator) : base(model, queue, consumer, configurator) { }
public RabbitMQBus(Action <IBusConfigurator> busConfigurator = null) { BusConfigurator busConfiguration = new BusConfigurator(); if (busConfigurator != null) { busConfigurator(busConfiguration); } BusId = busConfiguration.BusId; BusConnectionName = busConfiguration.ConnectionProvidedName; _exchange = "amq.headers"; string username = "******"; string password = "******"; if (!string.IsNullOrEmpty(busConfiguration.ConnectionString.Endpoint)) { _exchange = busConfiguration.ConnectionString.Endpoint; } if (!string.IsNullOrEmpty(busConfiguration.ConnectionString.Username)) { username = busConfiguration.ConnectionString.Username; } if (!string.IsNullOrEmpty(busConfiguration.ConnectionString.Password)) { password = busConfiguration.ConnectionString.Password; } ConnectionFactory factory = new ConnectionFactory { HostName = busConfiguration.ConnectionString.Host, Port = busConfiguration.ConnectionString.Port, AutomaticRecoveryEnabled = true, TopologyRecoveryEnabled = true, UserName = username, Password = password, VirtualHost = busConfiguration.ConnectionString.VirtualHost, DispatchConsumersAsync = true }; _connection = factory.CreateConnection(busConfiguration.ConnectionProvidedName); _connection.ConnectionBlocked += (sender, args) => { busConfiguration.ConnectionBlocked(args.Reason); }; _connection.ConnectionUnblocked += (sender, args) => { busConfiguration.ConnectionUnblocked(); }; _createSubscriberConfigurator = configure => { SubscriberConfigurator configurator = new SubscriberConfigurator(_exchange, busConfiguration.ReplyExchange, busConfiguration.ErrorSubscriber, busConfiguration.ReceiveSelfPublish, busConfiguration.Trace, () => busConfiguration.Blocked); if (configure != null) { configure(configurator); } return(configurator); }; _createPublisherConfigurator = configure => { PublisherConfigurator configurator = new PublisherConfigurator(_exchange, busConfiguration.ErrorHandler, busConfiguration.Trace, () => busConfiguration.Blocked); if (configure != null) { configure(configurator); } return(configurator); }; _createRpcPublisherConfigurator = configure => { RpcPublisherConfigurator configurator = new RpcPublisherConfigurator(_exchange, busConfiguration.UseFastReply, busConfiguration.ReplyExchange, busConfiguration.ErrorHandler, busConfiguration.Trace, () => busConfiguration.Blocked); if (configure != null) { configure(configurator); } return(configurator); }; }
public Receiver(IModel model, string busId, string queue, IMessageHelper messageHelper, SubscriberConfigurator configurator) { _model = model; _busId = busId; _queue = queue; _messageHelper = messageHelper; _serializers = configurator.Serializers; _errorSubscriber = configurator.ErrorSubscriber; _receiveSelfPublish = configurator.ReceiveSelfPublish; _helper = new SubscriptionHelper((type, filterInfo, handler) => { if (_nameMappings.TryAdd(type, filterInfo)) { _model.QueueBind(_queue, configurator.Exchange, configurator.RoutingKey, filterInfo); return(true); } return(false); }); }