Explicitly Configure Endpoints
services.AddMassTransit(x => { x.AddConsumer<SubmitOrderConsumer>(); x.UsingRabbitMq((context, cfg) => { cfg.ReceiveEndpoint("order-service", e => { e.ConfigureConsumer<SubmitOrderConsumer>(context); }); }); });
Temporary Endpoints
Some consumers only need to receive messages while connected, and any messages published while disconnected should be discarded. This can be achieved by using a TemporaryEndpointDefinition to configure the receive endpoint.
services.AddMassTransit(x => { x.AddConsumer<SubmitOrderConsumer>(); x.UsingInMemory((context, cfg) => { cfg.ReceiveEndpoint(new TemporaryEndpointDefinition(), e => { e.ConfigureConsumer<SubmitOrderConsumer>(context); }); cfg.ConfigureEndpoints(context); }); });
Endpoint Configuration
services.AddMassTransit(x => { x.AddConsumer<SubmitOrderConsumer>(typeof(SubmitOrderConsumerDefinition)) .Endpoint(e => { // override the default endpoint name e.Name = "order-service-extreme"; // specify the endpoint as temporary (may be non-durable, auto-delete, etc.) e.Temporary = false; // specify an optional concurrent message limit for the consumer e.ConcurrentMessageLimit = 8; // only use if needed, a sensible default is provided, and a reasonable // value is automatically calculated based upon ConcurrentMessageLimit if // the transport supports it. e.PrefetchCount = 16; // set if each service instance should have its own endpoint for the consumer // so that messages fan out to each instance. e.InstanceId = "something-unique"; }); x.UsingRabbitMq((context, cfg) => cfg.ConfigureEndpoints(context)); });
References
https://masstransit.io/documentation/configuration#receive-endpoints