using MassTransit;
using MassTransitDemo.Contracts;
namespace MassTransitDemo.Consumer.Consumers;
///
/// 发布/订阅模式的消费者2
/// 用于演示多个消费者接收同一条广播消息
///
public class PublishSubscribeConsumer2 : IConsumer
{
private readonly ILogger _logger;
///
/// 构造函数
///
/// 日志记录器
public PublishSubscribeConsumer2(ILogger logger)
{
_logger = logger;
}
///
/// 消费消息的方法
///
/// 消息上下文
public Task Consume(ConsumeContext context)
{
try
{
_logger.LogInformation("【消费者2】收到发布/订阅消息");
_logger.LogInformation(" MessageId: {MessageId}", context.Message.MessageId);
_logger.LogInformation(" CreatedAt: {CreatedAt}", context.Message.CreatedAt);
_logger.LogInformation(" Title: {Title}", context.Message.Title);
_logger.LogInformation(" Content: {Content}", context.Message.Content);
_logger.LogInformation(" Priority: {Priority}", context.Message.Priority);
// 模拟不同的处理逻辑(与消费者1不同的处理方式)
var processedContent = $"[消费者2处理] {context.Message.Content.ToUpper()}";
_logger.LogInformation(" 处理结果: {ProcessedContent}", processedContent);
_logger.LogInformation("【消费者2】消息处理完成");
return Task.CompletedTask;
}
catch (Exception ex)
{
_logger.LogError(ex, "【消费者2】消息处理失败");
throw;
}
}
}