feat(AIHITMainLoader, API, JobAutoControl, Master): изменен метод отправки сообщений в RabbitMq

This commit is contained in:
Mikhail Trubnikov
2026-01-22 10:56:02 +10:00
parent b7fca08d28
commit b34be5ccbe
7 changed files with 36 additions and 19 deletions

View File

@@ -3,8 +3,8 @@ using Microsoft.Extensions.Logging;
using PARR.AIHITMainLoader.Models; using PARR.AIHITMainLoader.Models;
using PARR.AIHITMainLoader.Services; using PARR.AIHITMainLoader.Services;
using PARR.AIHITMainLoader.Settings; using PARR.AIHITMainLoader.Settings;
using PARR.BLL.Domain.Mq;
using PARR.BLL.Services.Interfaces; using PARR.BLL.Services.Interfaces;
using System.Text.Encodings.Web;
using System.Text.Json; using System.Text.Json;
namespace PARR.AIHITMainLoader namespace PARR.AIHITMainLoader
@@ -19,6 +19,11 @@ namespace PARR.AIHITMainLoader
private readonly IMqService mqService; private readonly IMqService mqService;
private readonly IServiceProvider serviceProvider; private readonly IServiceProvider serviceProvider;
private static readonly JsonSerializerOptions jsonOptions = new JsonSerializerOptions
{
Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping,
};
public AihitMainLoader( public AihitMainLoader(
ILogger<AihitMainLoader> logger, ILogger<AihitMainLoader> logger,
IIntervalService intervalService, IIntervalService intervalService,
@@ -82,7 +87,7 @@ namespace PARR.AIHITMainLoader
var mainData = item.ToMainData(); var mainData = item.ToMainData();
if (mainData == null) continue; if (mainData == null) continue;
var json = JsonSerializer.Serialize(mainData); var json = JsonSerializer.Serialize(mainData, jsonOptions);
currentBatch.Add(json); currentBatch.Add(json);
// Отправка, если набрали полный пакет // Отправка, если набрали полный пакет

View File

@@ -72,9 +72,10 @@ namespace PARR.API.Controllers.V1
HistoryInitiator = new HistoryInitiator { InitiatorIp = clientService.GetClientIp()?.ToString(), InitiatorParrComponentId = ParrComponentsEnum.Api } HistoryInitiator = new HistoryInitiator { InitiatorIp = clientService.GetClientIp()?.ToString(), InitiatorParrComponentId = ParrComponentsEnum.Api }
}; };
var msg = JsonSerializer.Serialize(obj); //var msg = JsonSerializer.Serialize(obj);
var _result = await mqService.SendAsync(mqSettings.GenerateTemplates, new[] { msg }); //var _result = await mqService.SendAsync(mqSettings.GenerateTemplates, new[] { msg });
var _result = await mqService.SendAsync(mqSettings.GenerateTemplates, new List<object> { obj });
if (_result.IsSuccess == false) if (_result.IsSuccess == false)
result = false; result = false;

View File

@@ -640,18 +640,20 @@ namespace PARR.API.Controllers.V1
} }
}; };
var msg = JsonSerializer.Serialize(request); //var msg = JsonSerializer.Serialize(request);
//var result = await mqService.SendAsync(mqSettings.TemplatesMatcher, new[] { msg });
var result = await mqService.SendAsync(mqSettings.TemplatesMatcher, new List<object> { request });
var result = await mqService.SendAsync(mqSettings.TemplatesMatcher, new[] { msg });
logger.LogDebug("Получен код отпрвки: {IsSuccess}", result.IsSuccess); logger.LogDebug("Получен код отпрвки: {IsSuccess}", result.IsSuccess);
if (!result.IsSuccess) if (!result.IsSuccess)
{ {
logger.LogError($"Ошибка при отправке запроса в очередь на обновление связанных шаблонов, после обновления маски шаблона. {msg}"); logger.LogError($"Ошибка при отправке запроса в очередь на обновление связанных шаблонов, после обновления маски шаблона. {request.ToJson()}");
return false; return false;
} }
logger.LogInformation($"После изменения маски шаблона в jobId: {jobId}, отправлен запрос в очередь на переименование связанных шаблонов: {msg}"); logger.LogInformation($"После изменения маски шаблона в jobId: {jobId}, отправлен запрос в очередь на переименование связанных шаблонов: {request.ToJson()}");
return true; return true;
} }

View File

@@ -73,10 +73,11 @@ namespace PARR.API.Controllers.V1
} }
}; };
var msg = JsonSerializer.Serialize(matchTemplateTask); //var msg = JsonSerializer.Serialize(matchTemplateTask);
logger.LogDebug("Подготовлено сообщение: {Message}", new[] { msg }); //logger.LogDebug("Подготовлено сообщение: {Message}", new[] { msg });
var result = await mqService.SendAsync(mqSettings.TemplatesMatcher, new[] { msg }); //var result = await mqService.SendAsync(mqSettings.TemplatesMatcher, new[] { msg });
var result = await mqService.SendAsync(mqSettings.TemplatesMatcher, new List<object> { matchTemplateTask });
logger.LogDebug("Получен код отпрвки: {IsSuccess}", result.IsSuccess); logger.LogDebug("Получен код отпрвки: {IsSuccess}", result.IsSuccess);
if (!result.IsSuccess) if (!result.IsSuccess)

View File

@@ -67,9 +67,10 @@ namespace PARR.API.Controllers.V1
HistoryInitiator = new HistoryInitiator { InitiatorIp = clientService.GetClientIp()?.ToString(), InitiatorParrComponentId = ParrComponentsEnum.Api } HistoryInitiator = new HistoryInitiator { InitiatorIp = clientService.GetClientIp()?.ToString(), InitiatorParrComponentId = ParrComponentsEnum.Api }
}; };
var msg = JsonSerializer.Serialize(mqRequest); //var msg = JsonSerializer.Serialize(mqRequest);
var sendResult = await mqService.SendAsync(mqSettings.TemplateActivator, new[] { msg }); //var sendResult = await mqService.SendAsync(mqSettings.TemplateActivator, new[] { msg });
var sendResult = await mqService.SendAsync(mqSettings.TemplateActivator, new List<object> { mqRequest });
if (!sendResult.IsSuccess) if (!sendResult.IsSuccess)
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при отправке данных." } })); return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при отправке данных." } }));

View File

@@ -75,17 +75,18 @@ namespace PARR.JobAutoControl
InitiatorIp = null, InitiatorIp = null,
InitiatorParrComponentId = Constants.ParrComponentsEnum.JobAutoControl InitiatorParrComponentId = Constants.ParrComponentsEnum.JobAutoControl
} }
}); }).ToList();
var msgStrList = msgList.Select(t => JsonSerializer.Serialize(t)); //var msgStrList = msgList.Select(t => JsonSerializer.Serialize(t));
// отправляем задания в очередь template matcher`a // отправляем задания в очередь template matcher`a
var sendResult = await mqService.SendAsync(mqSettings.TemplateMatcher, msgStrList.ToArray()); //var sendResult = await mqService.SendAsync(mqSettings.TemplateMatcher, msgStrList.ToArray());
var sendResult = await mqService.SendAsync(mqSettings.TemplateMatcher, msgList.ToList<object>());
if (!sendResult.IsSuccess) if (!sendResult.IsSuccess)
logger.LogError($"Ошибка при отправке сообщений ({msgStrList.Count()} шт.) в очередь."); logger.LogError($"Ошибка при отправке сообщений ({msgList.Count()} шт.) в очередь.");
else else
logger.LogInformation($"Выполнена отправка сообщений в очередь, {msgStrList.Count()} шт."); logger.LogInformation($"Выполнена отправка сообщений в очередь, {msgList.Count()} шт.");
} }
} }

View File

@@ -7,6 +7,7 @@ using PARR.DAL.Contracts;
using PARR.DAL.Models; using PARR.DAL.Models;
using PARR.DAL.Services.Interfaces; using PARR.DAL.Services.Interfaces;
using PARR.Master.Settings; using PARR.Master.Settings;
using System.Text.Encodings.Web;
using System.Text.Json; using System.Text.Json;
namespace PARR.Master.Services namespace PARR.Master.Services
@@ -20,6 +21,11 @@ namespace PARR.Master.Services
private readonly MqSettings mqSettings; private readonly MqSettings mqSettings;
private readonly IMqService mqService; private readonly IMqService mqService;
private static readonly JsonSerializerOptions jsonOptions = new JsonSerializerOptions
{
Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping,
};
public OrderMasterService( public OrderMasterService(
ILogger<OrderMasterService> logger, ILogger<OrderMasterService> logger,
IOrderService orderService, IOrderService orderService,
@@ -60,7 +66,7 @@ namespace PARR.Master.Services
//находим наряды где статусы не равны, добавляем их в Rabbit //находим наряды где статусы не равны, добавляем их в Rabbit
var ordersWithStatusNotEqual = await GetOrdresWithStatusCodeNotEqualAsync(); var ordersWithStatusNotEqual = await GetOrdresWithStatusCodeNotEqualAsync();
var objs = ordersWithStatusNotEqual.Select(t => JsonSerializer.Serialize(new OrderManageMq { OrderId = t.Id })); var objs = ordersWithStatusNotEqual.Select(t => JsonSerializer.Serialize(new OrderManageMq { OrderId = t.Id }, jsonOptions));
logger.LogInformation($"Ищу наряды где статусы не равны. Найдено нарядов: {ordersWithStatusNotEqual.Count()}. Добавляю их в RabbitMQ."); logger.LogInformation($"Ищу наряды где статусы не равны. Найдено нарядов: {ordersWithStatusNotEqual.Count()}. Добавляю их в RabbitMQ.");