# Platform
MassTransit supports building, deploying, and monitoring services on a container-based platform. The platform provides a consistent hosting environment for consumers, sagas, and activities, eliminating duplicated service code (no more cut-and-pasting Program.cs
). The platform Docker images can be used to deploy services to any container-based environment.
The platform image is hosted on Docker and is updated independent of the MassTransit package.
There are transport images as well, including RabbitMQ and ActiveMQ.
A preconfigured image for scheduling messages using Quartz is also available. The source is a good example of how to build an assembly for hosting on the platform. A preconfigured SQL Server container is also available for development purposes.
These images can be configured to specify the transport, as well as other options.
There is also a Live-Coding Video showing the Twitch sample being converted to run on the platform.
To build a service using the MassTransit Platform, create a startup class that implemented the IPlatformStartup
interface.
Package: MassTransit.Platform.Abstractions
public class OrderServicePlatformStartup :
IPlatformStartup
{
readonly ILogger<OrderServicePlatformStartup> _logger;
public QuartzPlatformStartup(IConfiguration configuration, ILogger<OrderServicePlatformStartup> logger)
{
_logger = logger;
}
public void ConfigureMassTransit(IServiceCollectionConfigurator configurator, IServiceCollection services)
{
_logger.LogInformation("Configuring Order Service");
configurator.AddConsumer<SubmitOrderConsumer>(typeof(SubmitOrderConsumerDefinition));
}
public void ConfigureBus<TEndpointConfigurator>(IBusFactoryConfigurator<TEndpointConfigurator> configurator, IServiceProvider provider)
where TEndpointConfigurator : IReceiveEndpointConfigurator
{
}
}
The example adds a consumer, including a consumer definition. When the bus is started, an endpoint will be created by convention for the consumer.
# Adding Configuration
To access configuration options, such as appsettings.json
or environment variables, add the configuration classes in the platform startup class.
public class OrderServicePlatformStartup :
IPlatformStartup
{
readonly IConfiguration _configuration;
public QuartzPlatformStartup(IConfiguration configuration)
{
_configuration = configuration;
}
public void ConfigureMassTransit(IServiceCollectionConfigurator configurator, IServiceCollection services)
{
services.Configure<OrderServiceOptions>(_configuration.GetSection("OrderService"));
}
}