2016-05-30 5 views
1

すべてのメッセージをデータベースに保存します。 RabbitMQでは、私はメイン/唯一の交換でトピック "*"(何か)を聞くためにコンシューマーを作成するだけです。EasyNetQはリスナーにすべてのメッセージを受信させたい

EasyNetQでは、新しいMessageクラスを作成するたびにロギングプロジェクトに行を追加する必要があるようです。私はこれを避けたいので、どのメッセージを送信しても、それは1つの場所でピックアップされ、将来すべての行を追加することを忘れずにデータベースに保存されます。

私は自分のロガー

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プロパティにアクセスすることができます。あなたの例では、 "logger"はIEasyNetQLoggerではなくSuperMessageになります。上記のコードでロガーを実装する方法がわからない。 – Nixxon

+0

申し訳ありませんが、私は少しあなたの質問を思いついた。新しいメッセージを作成するたびに、どこに行を追加する必要がありますか?投稿されたコードにメッセージクラスが表示されませんか? – virth

関連する問題