36 lines
1.5 KiB
C#
Raw Normal View History

2024-11-08 13:50:47 +08:00
using JiShe.CollectBus.Common.Enums;
2024-10-30 17:49:05 +08:00
using JiShe.CollectBus.MongoDB;
using JiShe.CollectBus.Protocol.Contracts.Models;
2024-10-28 16:23:39 +08:00
using MassTransit;
using Microsoft.Extensions.Logging;
using TouchSocket.Sockets;
namespace JiShe.CollectBus.RabbitMQ.Consumers
{
2024-11-08 13:50:47 +08:00
public class MessageIssuedConsumer(
ILogger<MessageIssuedEvent> logger,
ITcpService tcpService,
IMongoRepository<MessageReceivedHeartbeatEvent> mongoHeartbeatRepository,
IMongoRepository<MessageReceivedLoginEvent> mongoLoginRepository)
: IConsumer<MessageIssuedEvent>
2024-10-28 16:23:39 +08:00
{
public async Task Consume(ConsumeContext<MessageIssuedEvent> context)
{
2024-10-30 17:49:05 +08:00
switch (context.Message.Type)
{
case IssuedEventType.Heartbeat:
2024-11-08 13:50:47 +08:00
await mongoHeartbeatRepository.UpdateAsync(a => a.MessageId == context.Message.MessageId, b => new MessageReceivedHeartbeatEvent { IsAck = true, AckTime = DateTime.Now });
2024-10-30 17:49:05 +08:00
break;
case IssuedEventType.Login:
2024-11-08 13:50:47 +08:00
await mongoLoginRepository.UpdateAsync(a => a.MessageId == context.Message.MessageId, b => new MessageReceivedLoginEvent { IsAck = true, AckTime = DateTime.Now });
2024-10-30 17:49:05 +08:00
break;
case IssuedEventType.Data:
break;
default:
throw new ArgumentOutOfRangeException();
}
2024-11-08 13:50:47 +08:00
await tcpService.SendAsync(context.Message.ClientId, context.Message.Message);
2024-10-28 16:23:39 +08:00
}
}
}