EasyNetQ希望监听器接收所有消息

时间:2016-05-30 10:10:11

标签: .net rabbitmq easynetq

我想将每条消息保存到我的数据库中。 在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。但我(也)想要字符串/文本消息本身。

1 个答案:

答案 0 :(得分:0)

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

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

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

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

现在,只要您从Message

派生新邮件,就可以随时访问记录器中的BaseMessage属性