MassTransit
Die MassTransit Extension ermöglicht die Integration der ProcessCube Engine mit MassTransit für Service-Bus-Kommunikation.
Funktionsbeschreibung
MassTransit ist ein Open-Source Distributed Application Framework für .NET. Mit dieser Extension können Sie:
- Prozess-Events an MassTransit senden
- Messages von MassTransit empfangen und Prozesse starten
- Service-Bus-Patterns implementieren
Docker Compose einrichten
Um die Engine mit MassTransit zu verwenden, benötigen Sie einen Message Broker wie RabbitMQ:
version: '3.7'
services:
rabbitmq:
image: rabbitmq:3-management
ports:
- "5672:5672"
- "15672:15672"
environment:
RABBITMQ_DEFAULT_USER: admin
RABBITMQ_DEFAULT_PASS: admin
engine:
image: 5minds/processcube_engine:latest
ports:
- "8000:8000"
environment:
- masstransitExtension__enabled=true
- masstransitExtension__host=rabbitmq
- masstransitExtension__port=5672
- masstransitExtension__user=admin
- masstransitExtension__password=admin
depends_on:
- rabbitmq
consumer:
build: ./ConsumerApp
environment:
- RabbitMQ__Host=rabbitmq
- RabbitMQ__Username=admin
- RabbitMQ__Password=admin
depends_on:
- rabbitmqConsumer App
Eine Consumer App kann in C# mit MassTransit implementiert werden:
Consumer
// WriteToConsoleConsumer.cs
using MassTransit;
namespace ConsumerApp.Consumers
{
public class WriteToConsoleConsumer : IConsumer<WriteToConsole>
{
public Task Consume(ConsumeContext<WriteToConsole> context)
{
Console.WriteLine($"Received: {context.Message.Text}");
return Task.CompletedTask;
}
}
}Consumer Definition
// WriteToConsoleConsumerDefinition.cs
using MassTransit;
namespace ConsumerApp.Consumers
{
public class WriteToConsoleConsumerDefinition : ConsumerDefinition<WriteToConsoleConsumer>
{
protected override void ConfigureConsumer(
IReceiveEndpointConfigurator endpointConfigurator,
IConsumerConfigurator<WriteToConsoleConsumer> consumerConfigurator)
{
endpointConfigurator.UseMessageRetry(r => r.Intervals(500, 1000));
}
}
}Contract
// WriteToConsole.cs
namespace ConsumerApp.Contracts
{
public record WriteToConsole
{
public string Text { get; init; }
}
}Konfiguration
Die Extension wird über Umgebungsvariablen konfiguriert:
masstransitExtension__enabled: Aktiviert die MassTransit ExtensionmasstransitExtension__host: Hostname des Message BrokersmasstransitExtension__port: Port des Message BrokersmasstransitExtension__user: BenutzernamemasstransitExtension__password: Passwort