SmartTender.MessageBroker.AspNetCore 1.0.26

dotnet add package SmartTender.MessageBroker.AspNetCore --version 1.0.26                
NuGet\Install-Package SmartTender.MessageBroker.AspNetCore -Version 1.0.26                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SmartTender.MessageBroker.AspNetCore" Version="1.0.26" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add SmartTender.MessageBroker.AspNetCore --version 1.0.26                
#r "nuget: SmartTender.MessageBroker.AspNetCore, 1.0.26"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install SmartTender.MessageBroker.AspNetCore as a Cake Addin
#addin nuget:?package=SmartTender.MessageBroker.AspNetCore&version=1.0.26

// Install SmartTender.MessageBroker.AspNetCore as a Cake Tool
#tool nuget:?package=SmartTender.MessageBroker.AspNetCore&version=1.0.26                

Smarttender.MessageBroker.AspNetCore NuGet Package

Installation

To use this package, you can install it via NuGet Package Manager or directly add it to your project's dependencies in the .csproj file.

dotnet add package Smarttender.MessageBroker.AspNetCore

Usage

Dependency Injection method

public static class SmartMessageBrokerServicesDi { 
// Adding required services to the service collection public static IServiceCollection
public static IServiceCollection AddSmartMessageBroker(this IServiceCollection services, Action<BrokerConfigBase> configureApp)

// Starting consuming queues
public static IApplicationBuilder UseSmartMessageBrokerConsumers(this IApplicationBuilder app);

DI Registration Examples

using SmartMessageBroker;
using Smarttender.MessageBroker.Producer.Consumers;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllers();

builder.Services.AddSmartMessageBroker(
	cfg =>
	{
		cfg.ProducerConnectionString = builder.Configuration["RABBIT_CONNECTION_WRITE"]; // write connection string
		cfg.ConsumerConnectionString = builder.Configuration["RABBIT_CONNECTION_READ"]; // read connection string
		cfg.AddConsumer<CommercialStringMessageConsumer, StringDataMessage>(); // add consumer
		cfg.AddConsumer<CommonStringMessageConsumer, StringDataMessage>();
		cfg.AddConsumer<ProzorroSaleStringMessageConsumer, StringDataMessage>();
		cfg.AddConsumer<ProzorroPurchaseStringMessageConsumer, StringDataMessage>();
		cfg.LogTo(Console.WriteLine); // log debug messages to console
		cfg.LogExceptionsTo((ex, m) => {
			Console.WriteLine($"Exception: {ex.Message}, {m}"); // log exceptions to console
		});
		cfg.AddMessageProcessingLogger<MessageLogger>(); // add message processing logger
	});

var app = builder.Build();

// Configure the HTTP request pipeline.

app.UseHttpsRedirection();
app.UseSmartMessageBrokerConsumers();

app.MapControllers();

app.Run();

Replace builder.Configuration["RABBIT_CONNECTION_WRITE"] and builder.Configuration["RABBIT_CONNECTION_READ"] with your actual RabbitMQ connection strings.

Config method usage

There is a BrokerConfigBase class that is used to configure the message broker. It has the following properties and methods:

	public abstract class BrokerConfigBase
	{
		public TimeSpan? SendTimeout { get; set; } // Timeout for sending messages
		public TimeSpan? RecieveTimeout { get; set; } // Timeout for recieving messages
		public string ProducerConnectionString { get; set; } // Connection string for producer
		public string ConsumerConnectionString { get; set; } // Connection string for consumer
		public string ApplicationName { get; set; } // Application name for differentiating scopes of queues
		public QueueListeningMode Mode { get; set; } // OnePerApp or OnePerInstance mode for consumers
		public int ConnectRetriesCount { get; set; } = 3; // Number of retries to connect to RabbitMQ
		public int ConnectRetryDelayMs { get; set; } = 2000; // Delay between retries

		public abstract void LogExceptionsTo(Action<Exception, string> action); // Log exceptions to action
		public abstract void LogTo(Action<string> action); // Log debug messages to action
		public void AddFromProfile(BrokerProfile profile); // Add configuration from profile class
		public void AddFromProfiles(); // Add configuration from all profiles via reflection
		public abstract void AddConsumer<mC, M>() // Add consumer
			where mC : BasicAsyncConsumer<M>
			where M : BasicMessage;
		public abstract void AddMessageProcessingLogger<T>() // Add message processing logger that invokes on message processing
			where T : class, IMessageProcessingLogger;
	
	public enum QueueListeningMode
	{
		OnePerApp,
		OnePerInstance
	}
}
Product 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. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.1 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
1.0.26 2,417 11/12/2024
1.0.25 2,696 9/10/2024
1.0.24 114 9/10/2024
1.0.23 175 9/9/2024
1.0.22 106 9/9/2024
1.0.21 831 8/21/2024
1.0.20 9,568 8/21/2024
1.0.18 166 8/14/2024 1.0.18 is deprecated because it is no longer maintained and has critical bugs.
1.0.17 326 8/13/2024 1.0.17 is deprecated because it is no longer maintained and has critical bugs.
1.0.16 119 8/7/2024 1.0.16 is deprecated because it is no longer maintained and has critical bugs.
1.0.15 132 8/7/2024 1.0.15 is deprecated because it is no longer maintained and has critical bugs.
1.0.14 152 8/2/2024 1.0.14 is deprecated because it is no longer maintained and has critical bugs.
1.0.13 102 8/2/2024 1.0.13 is deprecated because it is no longer maintained and has critical bugs.
1.0.12 889 6/19/2024 1.0.12 is deprecated because it is no longer maintained and has critical bugs.
1.0.11 3,747 5/27/2024 1.0.11 is deprecated because it is no longer maintained and has critical bugs.
1.0.10 1,487 4/29/2024 1.0.10 is deprecated because it is no longer maintained and has critical bugs.
1.0.9 138 4/29/2024 1.0.9 is deprecated because it is no longer maintained and has critical bugs.
1.0.6 149 4/25/2024 1.0.6 is deprecated because it is no longer maintained and has critical bugs.
1.0.5 146 4/25/2024 1.0.5 is deprecated because it is no longer maintained and has critical bugs.
1.0.4 141 4/24/2024 1.0.4 is deprecated because it is no longer maintained and has critical bugs.
1.0.3 137 4/23/2024 1.0.3 is deprecated because it is no longer maintained and has critical bugs.
1.0.2 133 4/23/2024 1.0.2 is deprecated because it is no longer maintained and has critical bugs.