PEAK.Lib.MessageBrokerTrigger
1.1.0
dotnet add package PEAK.Lib.MessageBrokerTrigger --version 1.1.0
NuGet\Install-Package PEAK.Lib.MessageBrokerTrigger -Version 1.1.0
<PackageReference Include="PEAK.Lib.MessageBrokerTrigger" Version="1.1.0" />
<PackageVersion Include="PEAK.Lib.MessageBrokerTrigger" Version="1.1.0" />
<PackageReference Include="PEAK.Lib.MessageBrokerTrigger" />
paket add PEAK.Lib.MessageBrokerTrigger --version 1.1.0
#r "nuget: PEAK.Lib.MessageBrokerTrigger, 1.1.0"
#:package PEAK.Lib.MessageBrokerTrigger@1.1.0
#addin nuget:?package=PEAK.Lib.MessageBrokerTrigger&version=1.1.0
#tool nuget:?package=PEAK.Lib.MessageBrokerTrigger&version=1.1.0
PEAK.Lib.MessageBrokerTrigger
This guide provides instructions for handling messages using PEAK.Lib.MessageBrokerTrigger in two scenarios: Console Application and .NET API.
Default Constructor
public ServiceBusMessageTrigger(
string connectionString,
string queueName,
bool isSession,
Func<ServiceBusReceivedMessage, Task> messageHandler,
bool isTopic = false,
string? subscriptionName = null,
ILogger? logger = null,
ILoggerFactory? loggerFactory = null,
string? loggerCategoryName = null)
Session Enabled, ServiceBusSessionProcessorOptions (Optional) Constructor
public ServiceBusMessageTrigger(
string connectionString,
string queueName,
bool isSession = true,
Func<ServiceBusReceivedMessage, Task> messageHandler,
ServiceBusSessionProcessorOptions sessionProcessorOptions,
ILogger? logger = null,
ILoggerFactory? loggerFactory = null,
string? loggerCategoryName = null)
Session Disabled, ServiceBusProcessorOptions (Optional) Constructor
public ServiceBusMessageTrigger(
string connectionString,
string queueName,
bool isSession = false,
Func<ServiceBusReceivedMessage, Task> messageHandler,
ServiceBusProcessorOptions processorOptions,
ILogger? logger = null,
ILoggerFactory? loggerFactory = null,
string? loggerCategoryName = null)
Topic/Sub Session Enabled, ServiceBusSessionProcessorOptions (Optional) Constructor
public ServiceBusMessageTrigger(
string connectionString,
string topicName,
string? subscriptionName,
bool isSession = true,
Func<ServiceBusReceivedMessage, Task> messageHandler,
ServiceBusSessionProcessorOptions sessionProcessorOptions,
ILogger? logger = null,
ILoggerFactory? loggerFactory = null,
string? loggerCategoryName = null)
Topic/Sub Session Disabled, ServiceBusProcessorOptions (Optional) Constructor
public ServiceBusMessageTrigger(
string connectionString,
string topicName,
string? subscriptionName,
bool isSession = false,
Func<ServiceBusReceivedMessage, Task> messageHandler,
bool isTopic = true,
string? subscriptionName,
ServiceBusProcessorOptions processorOptions,
ILogger? logger = null,
ILoggerFactory? loggerFactory = null,
string? loggerCategoryName = null)
Scenario 1. Console Application
Follow these steps to implement a message handler in a console application:
Code Example
using PEAK.Lib.MessageBrokerTrigger;
internal static async Task Main(string[] args)
{
var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole());
Func<ServiceBusReceivedMessage, Task> messageHandler = (message) =>
{
var messageBody = message.Body.ToString();
Console.WriteLine(messageBody);
return Task.CompletedTask;
};
ServiceBusMessageTrigger serviceBusQueueMessageTrigger = new ServiceBusMessageTrigger(
connectionString: "ServiceBusConnectionString",
queueName: "YourQueueName",
isSession: true,
messageHandler,
loggerFactory: loggerFactory,
loggerCategoryName: nameof(Main)
);
await serviceBusQueueMessageTrigger.StartAsync();
ServiceBusMessageTrigger serviceBusTopicMessageTrigger = new ServiceBusMessageTrigger(
connectionString: "ServiceBusConnectionString",
topicName: "YourTopicName",
subscriptionName: "YourSubscriptionName",
isSession: true,
messageHandler,
loggerFactory: loggerFactory,
loggerCategoryName: nameof(Main)
);
await serviceBusTopicMessageTrigger.CreateSubscriptionWithRuleAsync("InvoiceRule", "TransactionType = 'Invoice'", true);
await serviceBusTopicMessageTrigger.CreateSubscriptionWithRuleAsync("ReceiptRule", "TransactionType = 'Receipt'", true);
await serviceBusTopicMessageTrigger.StartAsync();
await Task.Delay(Timeout.Infinite);
}
Scenario 2. .NET API
For a .NET API, you need to create a MessageBrokerTrigger class and register it as a service.
Step 1: Create the MessageBrokerTrigger Class
Here's an example implementation:
public class MessageBrokerTrigger : IMessageBroker
{
private readonly ILoggerFactory _loggerFactory;
private ServiceBusMessageTrigger? _serviceBusQueueMessageTrigger;
private ServiceBusMessageTrigger? _serviceBusTopicMessageTrigger;
public MessageBrokerTrigger(ILoggerFactory loggerFactory)
{
_loggerFactory = loggerFactory;
}
public async Task StopAsync(CancellationToken cancellationToken)
{
if (_serviceBusQueueMessageTrigger != null)
{
await _serviceBusQueueMessageTrigger.StopAsync(cancellationToken);
}
if (_serviceBusTopicMessageTrigger != null)
{
await _serviceBusTopicMessageTrigger.StopAsync(cancellationToken);
}
}
public async Task StartAsync(CancellationToken cancellationToken)
{
Func<ServiceBusReceivedMessage, Task> messageHandler = (message) =>
{
var messageBody = message.Body.ToString();
Console.WriteLine(messageBody);
return Task.CompletedTask;
};
_serviceBusQueueMessageTrigger = new ServiceBusMessageTrigger(
connectionString: "ServiceBusConnectionString",
queueName: "YourQueueName",
isSession: true,
messageHandler,
loggerFactory: _loggerFactory,
loggerCategoryName: nameof(MessageBrokerTrigger)
);
await _serviceBusQueueMessageTrigger.StartAsync();
_serviceBusTopicMessageTrigger = new ServiceBusMessageTrigger(
connectionString: "ServiceBusConnectionString",
topicName: "YourTopicName",
subscriptionName: "YourSubscriptionName",
isSession: true,
messageHandler,
loggerFactory: _loggerFactory,
loggerCategoryName: nameof(MessageBrokerTrigger)
);
await _serviceBusTopicMessageTrigger.CreateSubscriptionWithRuleAsync("Rule", "filterExpression = 'Filter'");
await _serviceBusTopicMessageTrigger.StartAsync();
}
}
Step 2: Register the MessageBrokerTrigger as a Service
Add the following lines to your Program.cs or Startup.cs (depending on the version of .NET you're using):
builder.Services.AddSingleton<MessageBrokerTrigger>();
builder.Services.AddHostedService<MessageBrokerTrigger>();
Notes
- Replace
"ServiceBusConnectionString","YourTopicOrQueueName"Or"YourSubscriptionName" (if Topic)with the name of your actual Service Bus queue. - The Console Application example is designed to run indefinitely, while the .NET API example leverages
IHostedServicefor lifecycle management. - Use proper logging instead of
Console.WriteLinein production environments.
This structure ensures separation of concerns, maintainability, and readiness for deployment in both console applications and APIs.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Azure.Messaging.ServiceBus (>= 7.18.2)
- Microsoft.Extensions.Hosting (>= 3.1.32)
- Microsoft.Extensions.Logging (>= 3.1.32)
- Microsoft.Extensions.Logging.Console (>= 3.1.32)
-
.NETStandard 2.1
- Azure.Messaging.ServiceBus (>= 7.18.2)
- Microsoft.Extensions.Hosting (>= 6.0.1)
- Microsoft.Extensions.Logging (>= 6.0.1)
- Microsoft.Extensions.Logging.Console (>= 6.0.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|