PostgreSQL Quick Start¶
Not published by ForkForward Cargo yet
This page refers to a package that ForkForward Cargo does not publish yet: MassTransit.SqlTransport.PostgreSQL.
The code is in the repository, but the package name is not decided. Don't add the original MassTransit
package instead: a project must not reference ForkForward Cargo and MassTransit packages at the same time,
as both contain MassTransit.dll. See Packages.
This tutorial will get you from zero to up and running with SQL and MassTransit.
Walkthrough Video TBD
- The source for this sample is available on GitHub.
Prerequisites¶
Info
The following instructions assume you are starting from a completed In-Memory Quick Start
This example requires the following:
- a functioning installation of the dotnet runtime and sdk (at least 6.0)
- a functioning installation of Docker with Docker Compose support enabled.
Run PostgreSQL¶
For this quick start, we recommend running the preconfigured official Docker image of Postgres.
If you are running on an ARM platform
Once its up and running you can use your preferred tool to browse into the database.
Configure PostgreSQL¶
Add the MassTransit.SqlTransport.PostgreSQL package to the project.
Edit Program.cs¶
Change UsingInMemory to UsingPostgres as shown below.
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
services.AddOptions<SqlTransportOptions>().Configure(options =>
{
options.Host = "localhost";
options.Database = "sample";
options.Schema = "transport";
options.Role = "transport";
options.Username = "masstransit";
options.Password = "H4rd2Gu3ss!";
// credentials to run migrations
options.AdminUsername = "migration-user";
options.AdminPassword = "H4rderTooGu3ss!!";
});
// MassTransit will run the migrations on start up
services.AddPostgresMigrationHostedService();
services.AddMassTransit(x =>
{
// elided...
x.UsingPostgres((context,cfg) =>
{
cfg.ConfigureEndpoints(context);
});
});
services.AddHostedService<Worker>();
});
| Setting | Description |
|---|---|
Host |
The host to connect to. We are using localhost to connect to the docker container |
Port |
We are using the default 5432, so we aren't setting it. |
Database |
The name of the database to connect to |
Schema |
The schema to place the tables and functions inside of |
Role |
the role to assign for all created tables, functions, etc. |
Username |
The username of the user to login as for normal operations |
Password |
The password of the user to login as for normal operations |
AdminUsername |
The username of the admin user to login as when running migration commands |
AdminPassword |
The password of the admin user to login as when running migration commands |
Run the Project¶
The output should have changed to show the message consumer generating the output (again, press Control+C to exit). Notice that the bus address now starts with db.
Building...
info: MassTransit[0]
Configured endpoint Message, Consumer: GettingStarted.MessageConsumer
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: /Users/chris/Garbage/start/GettingStarted
info: MassTransit[0]
Bus started: db://localhost/
info: GettingStarted.MessageConsumer[0]
Received Text: The time is 3/24/2021 12:11:10 PM -05:00
At this point the service is connecting to PostgreSQL on localhost and publishing messages which are received by the consumer.