如何使用masstransit的重试政策与传奇?

时间:2016-05-05 02:24:56

标签: masstransit

当队列是一个传奇端点队列时,在命令和事件(如下图所示)中出现的用于存储消息的队列的ReceiveEndpoint内部配置RetryPolicy不起作用。

此配置正常(请注意端点 RegisterOrderServiceQueue ):

  ...
  var bus = BusConfigurator.ConfigureBus((cfg, host) =>
  {
       cfg.ReceiveEndpoint(host, RabbitMqConstants.RegisterOrderServiceQueue, e =>
      {
           e.UseRetry(Retry.Except<ArgumentException>().Immediate(3));
  ...
在Windows服务上运行Saga状态机的

...总线 RetryPolicy 配置不起作用(注意端点 SagaQueue ):

    ...
var bus = BusConfigurator.ConfigureBus((cfg, host) =>
{
    cfg.ReceiveEndpoint(host, RabbitMqConstants.SagaQueue, e =>
    {
        e.UseRetry(Retry.Except<ArgumentException>().Immediate(3));
...

抛出ArgumentException的StateMachine类源代码:

...
During(Registered,
    When(ApproveOrder)
        .Then(context =>
        {
            throw new ArgumentException("Test for monitoring sagas");
            context.Instance.EstimatedTime = context.Data.EstimatedTime;
            context.Instance.Status = context.Data.Status;
        })
        .TransitionTo(Approved),
...

但是当 ApproveOrder 出现时,忽略RetryPolicy规则,并连接Sagas所连接的总线中的ConsumeObserver,ConsumeFault的方法执行5次(这是masstransit的默认行为)。 / p>

这应该有用吗?我的配置有什么误解吗?

0 个答案:

没有答案