2

特定の Database-Value が変更されるのを待つべき Saga があります。どうすればこれを達成できますか?

例:

public partial class OrderSaga : Saga<OrderSagaData>, IHandleMessages<FinishOrder> {
   public void Handle(FinishOrder message)
   {
      Order order=new Order(message.OrderId);
      if (order.Approved) {
         SendMail(order);
      }
   }
}

そのOrderのbool「承認済み」がtrueの時にメールを送りたい。ただし、これには数時間または数日かかる場合があります。Saga に数時間後に再度確認するように指示するにはどうすればよいですか? 私は Sagas と NServiceBus を初めて使用するので、答えは簡単かもしれませんが、見つけられませんでした。

4

1 に答える 1

1

別の条件が満たされるのをまだ待っている場合は、着信メッセージを延期できます。これにより、メッセージにタイムアウトが適用され、今後の処理のためにメッセージがバスに戻されます。

NServiceBus 4 または 5 を使用しているかどうかに応じて、遅延のメソッド シグネチャは変わりますが、 を使用していると仮定してV4、次の行に沿って何かを行うことができます。

if (!order.Approved)
{
    Bus.Defer(TimeSpan.FromHours(1), message);
    //This will defer message handling by an hour
}
else
{
    SendMail(order);
}
于 2015-02-16T10:30:05.650 に答える