2013-12-11 12 views
11

私はRabbitMQバージョン3.0.2を使用しています&エラーキューには1000個近くのメッセージがあります。私は知りたいMassTransit with RabbitMQ:メッセージがエラーキューに移動したとき

  1. どの時点でメッセージがエラーキューに移動しますか?
  2. 特定のメッセージがエラーキューに移動している理由を知る方法はありますか?
  3. メッセージをエラーキューから通常キューに移動する方法はありますか?

あなたは、キュー内のメッセージで覗いたら...

  • そうでもないというメッセージを5回あなたが

  • 答えて

    7
    1. a)は、彼らがデシリアライズに失敗またはb)消費者が例外処理をスローありがとうペイロードヘッダーにノートが含まれている可能性がありますが、私はそれをしたとは思いません。ログオン(NLog、log4netなど)を有効にすると、ログに例外が表示されるはずです。その時点でメッセージIDを相関させて、その理由を正確に把握する必要があります。
    2. MassTransitを経由する方法はありません。主にこれを処理するための偉大な、一般的な方法ではないようです。誰もがこの周りのいくつかのプロセスを望んでいる。 Druはメッセージを問題の交換先に戻すために使用できるBusDriverアプリ(main MT source repo)を作成しました。このデフォルトの動作はそこにあります。それを処理するためのインフラストラクチャを置かなければ、少なくとも失敗していることを少なくとも知っています。
    +1

    ハイパートラビス、ありがとうございます。私の場合、100個のメッセージのうち、10個がエラーキューに移動します。今、私は、デシリアライゼーションとなぜ消費者が例外をスローするのかという理由で、少数のメッセージしか失敗しないことを理解できません。私たちはより良い理解を得るためにロギングを有効にする必要があると思います。 – SharpCoder

    +1

    デシリアライズでエラーが発生する可能性がありますが、通常はMTを使用してデータを交換機に入れていない場合にのみ発生します。あなたの消費者は例外をスローしている可能性があります。幸運にも、伐採は何が起きているのかを理解するための最初のステップです。ドキュメントが役立つはずです:http://masstransit.readthedocs.org/en/master/overview/logging.html – Travis

    +0

    これを説明していただきありがとうございます。しかし、あなたが共有したリンクはMassTransit用であり、RabbitMQのロギング用ではありません。私は間違っているかもしれませんが、私はRabbitMQのエラーを記録する必要があると思います – SharpCoder

    1

    トラヴィスの答えに追加するには 、私の開発の間に私はエラー・キューに行くメッセージのためのいくつかの他の理由が見つかりました:

    公表されたメッセージの種類には、消費者
  • SAGAと消費者を持っていない
    1. 同じ具体的なメッセージタイプが必要です。 "Accepts"と ".Selected"を使って区別してみても、SAGAとConsumerは同じメッセージタイプを受け取るようにプログラムするべきではありません。
  • +0

    消費者がいなくても、私のためにメッセージをエラーキューにプッシュしていました。 – Chrysalis

    関連する問題