2016-05-15 16 views
1

質問があります。メッセージを消費しないようにフィルタを作成できますか? たとえば、メッセージは次のとおりです。maststransitフィルタがメッセージを受信中に受信しました

public class ProcessingTask : IProcessingTask 
{ 
    public int Id { set; get; } 
    public string ExternalId { set; get; } 
    public ProcessingTaskStatus Status { set; get; } 
    public string Details { set; get; } 
} 

メッセージStatusは、例えばProcessingTaskStatus.Receivedであれば、私は消費者にメッセージを渡す必要があります。別の方法では、メッセージを拒否する必要があります。

答えて

3

だから、あなたは、彼らが消費者に届く前に、メッセージをフィルタリングするContentFilterを使用することができます。

configurator.Consumer(() => _consumer, x => 
    { 
     x.ConfigureMessage<IProcessingTask>(v => v.UseContentFilter(async context => context.Message.Status == ProcessingTaskStatus.Received)); 
    }); 

あなたはセットアップに各メッセージタイプ用のフィルタを持って、彼らは個別に設定。

+1

MassTransit 3にはまだUseContentFilterメソッドがありますか?私はそれを見つけることができません。または、同じアプリケーションから公開されたメッセージを受信できないようにするにはどうすればよいですか?私は複数のアプリケーション間でデータを同期しようとしていますが、メッセージを公開したアプリケーションもそれを消費することは望ましくありません。 –

関連する問題