/// <summary> /// Create a mediator, which sends messages to consumers, handlers, and sagas. Messages are dispatched to the consumers asynchronously. /// Consumers are not directly coupled to the sender. Can be used entirely in-memory without a broker. /// </summary> /// <param name="selector"></param> /// <param name="configure"></param> /// <returns></returns> /// <exception cref="ArgumentNullException"></exception> public static IMediator CreateMediator(this IBusFactorySelector selector, Action <IMediatorConfigurator> configure) { if (configure == null) { throw new ArgumentNullException(nameof(configure)); } var topologyConfiguration = new InMemoryTopologyConfiguration(InMemoryBus.MessageTopology); var busConfiguration = new InMemoryBusConfiguration(topologyConfiguration, new Uri("loopback://localhost")); var endpointConfiguration = busConfiguration.HostConfiguration.CreateReceiveEndpointConfiguration("mediator"); var configurator = new MediatorConfiguration(busConfiguration.HostConfiguration, endpointConfiguration); configure(configurator); var mediatorDispatcher = configurator.Build(); var responseEndpointConfiguration = busConfiguration.HostConfiguration.CreateReceiveEndpointConfiguration("response"); var responseConfigurator = new ReceivePipeDispatcherConfiguration(busConfiguration.HostConfiguration, responseEndpointConfiguration); configurator = new MediatorConfiguration(busConfiguration.HostConfiguration, responseEndpointConfiguration); configure(configurator); var responseDispatcher = responseConfigurator.Build(); return(new MassTransitMediator(LogContext.Current, endpointConfiguration, mediatorDispatcher, responseEndpointConfiguration, responseDispatcher)); }
/// <summary> /// Configure and create an in-memory bus /// </summary> /// <param name="baseAddress">Override the default base address</param> /// <param name="configure">The configuration callback to configure the bus</param> /// <returns></returns> public static IBusControl Create(Uri baseAddress, Action <IInMemoryBusFactoryConfigurator> configure) { var topologyConfiguration = new InMemoryTopologyConfiguration(MessageTopology); var busConfiguration = new InMemoryBusConfiguration(topologyConfiguration, baseAddress); var configurator = new InMemoryBusFactoryConfigurator(busConfiguration); configure(configurator); return(configurator.Build()); }
static InMemoryReceiveEndpointContext Build() { var topologyConfiguration = new InMemoryTopologyConfiguration(InMemoryBus.MessageTopology); IInMemoryBusConfiguration busConfiguration = new InMemoryBusConfiguration(topologyConfiguration, null); var receiveEndpointConfiguration = busConfiguration.HostConfiguration.CreateReceiveEndpointConfiguration("input-queue"); var hostTopology = new InMemoryHostTopology(busConfiguration.HostConfiguration, topologyConfiguration); var host = new InMemoryHost(busConfiguration.HostConfiguration, hostTopology); var builder = new InMemoryReceiveEndpointBuilder(busConfiguration.HostConfiguration, receiveEndpointConfiguration); if (LogContext.Current == null) { var loggerFactory = new TestOutputLoggerFactory(true); LogContext.ConfigureCurrentLogContext(loggerFactory); } return(builder.CreateReceiveEndpointContext()); }