1

我想将每条消息都保存到我的数据库中。直接在 RabbitMQ 中,我将创建一个消费者来在我的主要/唯一交换中侦听主题“*”(任何内容)。

在 EasyNetQ 中,每次创建新的 Message 类时,我似乎都必须在我的日志项目中添加一行。我想避免这种情况,所以无论我发送哪条消息,它都会在一个地方被提取并保存到数据库中,以备将来使用,而不必记住添加任何行。

我实现了自己的记录器

class MyLogger : IEasyNetQLogger
var logger = new MyLogger(); // implements IEasyNetQLogger
            _bus = RabbitHutch.CreateBus(Constants.ConnString, x => x.Register<IEasyNetQLogger>(_ => logger));

但收到的参数似乎只有 RoutingKey、CorrelationId、ConsumerTag、DliveryTag 和 Redelivered。但我(也)想要字符串/文本消息本身。

4

1 回答 1

0

您可以使用基类。如果你这样定义你的类:

public class BaseMessage 
{
    public string Message {get; set;}
}

并从此类中派生您创建的所有其他消息。所以你可以这样做:

bus = RabbitHutch.CreateBus(Constants.ConnString, x => x.Register<BaseMessage>(_ => logger));

Message现在,只要您从中获取新消息,您就可以随时访问记录器中的属性BaseMessage

于 2016-06-01T19:46:47.037 回答