52 lines
1.8 KiB
C#
52 lines
1.8 KiB
C#
using MassTransit;
|
||
using MassTransitDemo.Contracts;
|
||
|
||
namespace MassTransitDemo.Consumer.Consumers;
|
||
|
||
/// <summary>
|
||
/// 发布/订阅模式的消费者2
|
||
/// 用于演示多个消费者接收同一条广播消息
|
||
/// </summary>
|
||
public class PublishSubscribeConsumer2 : IConsumer<PublishSubscribeMessage>
|
||
{
|
||
private readonly ILogger<PublishSubscribeConsumer2> _logger;
|
||
|
||
/// <summary>
|
||
/// 构造函数
|
||
/// </summary>
|
||
/// <param name="logger">日志记录器</param>
|
||
public PublishSubscribeConsumer2(ILogger<PublishSubscribeConsumer2> logger)
|
||
{
|
||
_logger = logger;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 消费消息的方法
|
||
/// </summary>
|
||
/// <param name="context">消息上下文</param>
|
||
public Task Consume(ConsumeContext<PublishSubscribeMessage> 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;
|
||
}
|
||
}
|
||
}
|