2016-05-30 57 views
1

我想將每條消息保存到我的數據庫。 在RabbitMQ中,我直接創建一個消費者,以便在我的主/唯一交換中監聽主題「*」(任何事物)。EasyNetQ希望聽衆收到所有消息

在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和重新傳遞。但我(也)想要自己的字符串/文本消息。

回答

0

你可以使用基類。如果你這樣定義你的班級:

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

並且派生你從這個班級創建的其他所有消息。所以你可以這樣做:

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

現在你可以隨時只要你從BaseMessage

+0

得到新的消息我很欣賞的反饋接入到Message財產在你的記錄。在你的例子中,「記錄器」現在應該是一個SuperMessage,而不是一個IEasyNetQLogger。不確定如何使用上述代碼實現記錄器。 – Nixxon

+0

對不起,我錯誤地理解了你的問題。但是每次創建新消息時,您需要在哪裏添加一行?在發佈的代碼中看不到消息類? – virth