Привет, я нуб, когда дело доходит до мастстранзита и RabbitMQ.Я пытаюсь реализовать потребителя сбоев, который будет просто читать из очереди ошибок, фактически не потребляя и не вынимая сообщение из очереди ошибок.
У меня настроен потребитель и неисправный потребитель.
cfg.ReceiveEndpoint(host, nameof(MassMailJobCommand), e =>
{
e.Consumer<MassMailJobCommandConsumer>(context);
e.Consumer<FaultConsumer<MassMailJobCommand>>(context);
});
А вот мой класс FaultConsumer
public class FaultConsumer<T> : IConsumer<Fault<T>>
{
private INotificationsClient _notificationsClient;
private NotificationsOptions _notificationsOptions;
private ILogger _logger;
public FaultConsumer(ILogger<T> logger,
IOptionsSnapshot<NotificationsOptions> notificationsOptions,
INotificationsClient notificationClient
)
{
_notificationsClient = notificationClient;
_notificationsOptions = notificationsOptions.Value;
_logger = logger;
}
public async Task Consume(ConsumeContext<Fault<T>> context)
{
string exceptions = "";
foreach (var ex in context.Message.Exceptions)
{
exceptions += $"{ex.StackTrace.ToString()};" +
"\n=================>>>>>>>>====================>>>>>>>>==========================\n" +
"====================== *END OF STACKTRACE* =========================\n" +
"===================>>>>>>>>====================>>>>>>>>==========================\n";
}
string message = $"Rabbit MQ Error:\n*Destination Address:* {context.DestinationAddress}\n*Original Message:* {context.Message.Message}\n*Exceptions:* {exceptions}";
await _notificationsClient.Slack(message);
}
}
Он отправляет его в свободный канал.Он работает отлично, за исключением того, что я не хочу, чтобы сообщения выходили из очереди ошибок.
Большое спасибо.