/// <summary> /// Creates a new instance of <see cref="RabbitBus"/>. /// The RabbitMQ broker is defined in the connection string named 'rabbit'. /// </summary> /// <param name="advancedBusEventHandlers"> /// An <see cref="AdvancedBusEventHandlers"/> instance which is used to add handlers /// to the events of the newly created <see cref="IBus.Advanced"/>. /// As <see cref="RabbitAdvancedBus"/> attempts to connect during instantiation, specifying a <see cref="AdvancedBusEventHandlers"/> /// before instantiation is the only way to catch the first <see cref="AdvancedBusEventHandlers.Connected"/> event. /// </param> /// <param name="registerServices"> /// Override default services. For example, to override the default <see cref="ILogger"/>: /// RabbitHutch.CreateBus("host=localhost", x => x.Register{ILogger}(_ => myLogger)); /// </param> /// <returns> /// A new <see cref="RabbitBus"/> instance. /// </returns> public static IBus CreateBus(AdvancedBusEventHandlers advancedBusEventHandlers, Action <IServiceRegister> registerServices) { string rabbitConnectionString; var rabbitConnection = ConfigurationManager.ConnectionStrings["rabbit"]; if (rabbitConnection == null) { throw new EasyNetQException( "Could not find a connection string for RabbitMQ. " + "Please add a connection string in the <ConnectionStrings> section" + "of the application's configuration file. For example: " + "<add name=\"rabbit\" connectionString=\"host=localhost\" />"); } rabbitConnectionString = rabbitConnection.ConnectionString; return(CreateBus(rabbitConnectionString, advancedBusEventHandlers, registerServices)); }
/// <summary> /// Creates a new instance of <see cref="RabbitBus"/>. /// The RabbitMQ broker is defined in the connection string named 'rabbit'. /// </summary> /// <param name="advancedBusEventHandlers"> /// An <see cref="AdvancedBusEventHandlers"/> instance which is used to add handlers /// to the events of the newly created <see cref="IBus.Advanced"/>. /// As <see cref="RabbitAdvancedBus"/> attempts to connect during instantiation, specifying a <see cref="AdvancedBusEventHandlers"/> /// before instantiation is the only way to catch the first <see cref="AdvancedBusEventHandlers.Connected"/> event. /// </param> /// <returns> /// A new <see cref="RabbitBus"/> instance. /// </returns> public static IBus CreateBus(AdvancedBusEventHandlers advancedBusEventHandlers) { return(CreateBus(advancedBusEventHandlers, c => {})); }
public AdvancedBus( IConnectionFactory connectionFactory, IConsumerFactory consumerFactory, ILogger logger, IClientCommandDispatcherFactory clientCommandDispatcherFactory, IPublishConfirmationListener confirmationListener, IEventBus eventBus, IHandlerCollectionFactory handlerCollectionFactory, IContainer container, ConnectionConfiguration connectionConfiguration, IProduceConsumeInterceptor produceConsumeInterceptor, IMessageSerializationStrategy messageSerializationStrategy, IConventions conventions, AdvancedBusEventHandlers advancedBusEventHandlers, IPersistentConnectionFactory persistentConnectionFactory) { Preconditions.CheckNotNull(connectionFactory, "connectionFactory"); Preconditions.CheckNotNull(consumerFactory, "consumerFactory"); Preconditions.CheckNotNull(logger, "logger"); Preconditions.CheckNotNull(eventBus, "eventBus"); Preconditions.CheckNotNull(handlerCollectionFactory, "handlerCollectionFactory"); Preconditions.CheckNotNull(container, "container"); Preconditions.CheckNotNull(messageSerializationStrategy, "messageSerializationStrategy"); Preconditions.CheckNotNull(connectionConfiguration, "connectionConfiguration"); Preconditions.CheckNotNull(produceConsumeInterceptor, "produceConsumeInterceptor"); Preconditions.CheckNotNull(conventions, "conventions"); Preconditions.CheckNotNull(advancedBusEventHandlers, "advancedBusEventHandlers"); Preconditions.CheckNotNull(persistentConnectionFactory, "persistentConnectionFactory"); this.consumerFactory = consumerFactory; this.logger = logger; this.confirmationListener = confirmationListener; this.eventBus = eventBus; this.handlerCollectionFactory = handlerCollectionFactory; this.Container = container; this.connectionConfiguration = connectionConfiguration; this.produceConsumeInterceptor = produceConsumeInterceptor; this.messageSerializationStrategy = messageSerializationStrategy; this.Conventions = conventions; this.eventBus.Subscribe <ConnectionCreatedEvent>(e => OnConnected()); if (advancedBusEventHandlers.Connected != null) { Connected += advancedBusEventHandlers.Connected; } this.eventBus.Subscribe <ConnectionDisconnectedEvent>(e => OnDisconnected()); if (advancedBusEventHandlers.Disconnected != null) { Disconnected += advancedBusEventHandlers.Disconnected; } this.eventBus.Subscribe <ConnectionBlockedEvent>(OnBlocked); if (advancedBusEventHandlers.Blocked != null) { Blocked += advancedBusEventHandlers.Blocked; } this.eventBus.Subscribe <ConnectionUnblockedEvent>(e => OnUnblocked()); if (advancedBusEventHandlers.Unblocked != null) { Unblocked += advancedBusEventHandlers.Unblocked; } this.eventBus.Subscribe <ReturnedMessageEvent>(OnMessageReturned); if (advancedBusEventHandlers.MessageReturned != null) { MessageReturned += advancedBusEventHandlers.MessageReturned; } connection = persistentConnectionFactory.CreateConnection(); clientCommandDispatcher = clientCommandDispatcherFactory.GetClientCommandDispatcher(connection); connection.Initialize(); }