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

View File

@@ -72,9 +72,10 @@ namespace PARR.API.Controllers.V1
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)
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);
if (!result.IsSuccess)
{
logger.LogError($"Ошибка при отправке запроса в очередь на обновление связанных шаблонов, после обновления маски шаблона. {msg}");
logger.LogError($"Ошибка при отправке запроса в очередь на обновление связанных шаблонов, после обновления маски шаблона. {request.ToJson()}");
return false;
}
logger.LogInformation($"После изменения маски шаблона в jobId: {jobId}, отправлен запрос в очередь на переименование связанных шаблонов: {msg}");
logger.LogInformation($"После изменения маски шаблона в jobId: {jobId}, отправлен запрос в очередь на переименование связанных шаблонов: {request.ToJson()}");
return true;
}

View File

@@ -73,10 +73,11 @@ namespace PARR.API.Controllers.V1
}
};
var msg = JsonSerializer.Serialize(matchTemplateTask);
logger.LogDebug("Подготовлено сообщение: {Message}", new[] { msg });
//var msg = JsonSerializer.Serialize(matchTemplateTask);
//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);
if (!result.IsSuccess)

View File

@@ -67,9 +67,10 @@ namespace PARR.API.Controllers.V1
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)
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при отправке данных." } }));

View File

@@ -75,17 +75,18 @@ namespace PARR.JobAutoControl
InitiatorIp = null,
InitiatorParrComponentId = Constants.ParrComponentsEnum.JobAutoControl
}
});
}).ToList();
var msgStrList = msgList.Select(t => JsonSerializer.Serialize(t));
//var msgStrList = msgList.Select(t => JsonSerializer.Serialize(t));
// отправляем задания в очередь 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)
logger.LogError($"Ошибка при отправке сообщений ({msgStrList.Count()} шт.) в очередь.");
logger.LogError($"Ошибка при отправке сообщений ({msgList.Count()} шт.) в очередь.");
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.Services.Interfaces;
using PARR.Master.Settings;
using System.Text.Encodings.Web;
using System.Text.Json;
namespace PARR.Master.Services
@@ -20,6 +21,11 @@ namespace PARR.Master.Services
private readonly MqSettings mqSettings;
private readonly IMqService mqService;
private static readonly JsonSerializerOptions jsonOptions = new JsonSerializerOptions
{
Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping,
};
public OrderMasterService(
ILogger<OrderMasterService> logger,
IOrderService orderService,
@@ -60,7 +66,7 @@ namespace PARR.Master.Services
//находим наряды где статусы не равны, добавляем их в Rabbit
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.");