У меня есть служба электронной почты EnduroMailer
, установленная как служба Windows на нашем производственном компьютере. EnduroMailer связывается с RabbitMQ через MassTransit, чтобы забрать любые электронные письма, ожидающие в очереди, и отправляет их.
Мой код для отправки запроса RabbitMQ выглядит следующим образом:
public class EmailService : IEmailService
{
private readonly ISendEndpointProvider _endpointProvider;
public EmailService(ISendEndpointProvider endpointProvider)
{
_endpointProvider = endpointProvider;
}
public async Task SendEmail(string recipient, string from, string subject, string body,
CancellationToken cancellationToken = default)
{
var endpoint = await _endpointProvider.GetSendEndpoint(new Uri("queue:send-email"));
var request = new
{
From = from,
Recipient = recipient,
Subject = subject,
Body = body
};
await endpoint.Send<ISendEmail>(request, cancellationToken);
}
}
И потребитель в EnduroMailer выглядит так:
public async Task Consume(ConsumeContext<ISendEmail> context)
{
_logger.LogInformation("Request received.");
using var message = new MailMessage
{
From = new MailAddress(context.Message.From),
Body = context.Message.Body,
Subject = context.Message.Subject,
IsBodyHtml = true
};
message.To.Add(context.Message.Recipient);
await _client.SendMailAsync(message);
await context.RespondAsync<IEmailSent>(new {context.Message.Recipient});
}
Когда я запускаю автономную почтовую службу на моем локальном компьютере, она забирает все ожидающие письма из очереди и начинает их отправлять. Однако, когда я размещаю его как службу windows, сообщения помещаются в очередь send-email_skipped
. Одно из этих сообщений выглядит так:
message_id: 1d010000-5d03-0015-e776-08d82827f7d4
delivery_mode: 2
headers:
Content-Type: application/vnd.masstransit+json
MT-Activity-Id: |4988b6ad-4641fe692ecfa3d7.1.
MT-Host-Assembly: EnduroMail
MT-Host-AssemblyVersion: 1.0.0.0
MT-Host-FrameworkVersion: 3.1.1
MT-Host-MachineName: HERMES
MT-Host-MassTransitVersion: 6.3.2.0
MT-Host-OperatingSystemVersion: Microsoft Windows NT 6.2.9200.0
MT-Host-ProcessId: 4576
MT-Host-ProcessName: EnduroMail
MT-Reason: dead-letter
publishId: 2
content_type: application/vnd.masstransit+json
{
"messageId": "1d010000-5d03-0015-e776-08d82827f7d4",
"conversationId": "1d010000-5d03-0015-7c48-08d82827f7da",
"sourceAddress": "rabbitmq://192.168.250.194/HERMES_w3wp_bus_dwyoyyn7ycybkscrbdcnojqq8p?temporary=true",
"destinationAddress": "rabbitmq://192.168.250.194/send-email?bind=true",
"messageType": [
"urn:message:Enduro.Common.Messages.Requests:ISendEmail"
],
"message": {
"from": "REDACTED",
"recipient": "REDACTED",
"subject": "REDACTED",
"body": "REDACTED"
},
"sentTime": "2020-07-14T18:58:59.9686006Z",
"headers": {
"MT-Activity-Id": "|4988b6ad-4641fe692ecfa3d7.1."
},
"host": {
"machineName": "HERMES",
"processName": "w3wp",
"processId": 1636,
"assembly": "PigTrack.Presentation",
"assemblyVersion": "1.0.0.0",
"frameworkVersion": "3.1.1",
"massTransitVersion": "6.3.2.0",
"operatingSystemVersion": "Microsoft Windows NT 10.0.14393.0"
}
}
Что могло вызвать такое поведение?