Add Queue to Dependency Injection (Optimize)

This commit is contained in:
Suphonchai Phoonsawat 2024-08-19 21:20:05 +07:00
parent c0749bdc20
commit cf7a79166a
3 changed files with 116 additions and 33 deletions

View file

@ -21,6 +21,8 @@ using System.Transactions;
using BMA.EHR.Leave.Service.Filters;
using Hangfire.Common;
using BMA.EHR.Application.Repositories.Leaves.TimeAttendants;
using RabbitMQ.Client;
using BMA.EHR.Leave.Service.Services;
var builder = WebApplication.CreateBuilder(args);
{
@ -28,6 +30,51 @@ var builder = WebApplication.CreateBuilder(args);
var key = builder.Configuration["Jwt:Key"];
// ตั้งค่า RabbitMQ connection
builder.Services.AddSingleton<IConnection>(sp =>
{
var factory = new ConnectionFactory()
{
HostName = builder.Configuration["Rabbit:Host"],
UserName = builder.Configuration["Rabbit:User"],
Password = builder.Configuration["Rabbit:Password"],
};
return factory.CreateConnection();
});
builder.Services.AddSingleton<IModel>(sp =>
{
var connection = sp.GetRequiredService<IConnection>();
var channel = connection.CreateModel();
// ประกาศ queue
channel.QueueDeclare(queue: "fake-checkin-queue",
durable: true,
exclusive: false,
autoDelete: false,
arguments: null);
return channel;
});
builder.Services.AddSingleton<IModel>(sp =>
{
var connection = sp.GetRequiredService<IConnection>();
var channel = connection.CreateModel();
// ประกาศ queue
channel.QueueDeclare(queue: "checkin-queue",
durable: true,
exclusive: false,
autoDelete: false,
arguments: null);
return channel;
});
IdentityModelEventSource.ShowPII = true;
builder.Services.AddHttpContextAccessor();
@ -89,6 +136,8 @@ var builder = WebApplication.CreateBuilder(args);
builder.Services.AddPersistence(builder.Configuration);
builder.Services.AddLeavePersistence(builder.Configuration);
builder.Services.AddSingleton<RabbitCheckInService>();
builder.Services.AddControllers(options =>
{
options.SuppressAsyncSuffixInActionNames = false;