首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Masstransit Saga还款

Masstransit Saga还款
EN

Stack Overflow用户
提问于 2018-01-25 15:00:51
回答 1查看 758关注 0票数 1

我想使用独立的quartz调度器为状态机saga设置消息调度重新传递。现在它在普通消费者中工作得很好,但我不能正确地为saga设置redelivering。我的saga配置如下所示:

代码语言:javascript
复制
MassTransit.Bus.Factory.CreateUsingRabbitMq(cfg =>
        {
            var retryPolicy = Retry.Incremental(5, TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(2));

            cfg.UseMessageScheduler(new Uri($"rabbitmq://localhost/SchedulerQueue"));

            var host = cfg.Host(new Uri(uri), h =>
            {
                h.Username(config.RabbitMqUser);
                h.Password(config.RabbitMqPassword);
            });

            cfg.ReceiveEndpoint(host, "SagaQueue", e =>
            {
                e.Durable = true;

                e.StateMachineSaga(new MySaga(),
                    repository, c =>
                    {
                        c.UseTransaction();
                        c.Message<ISagaEvent>(y => y.UseScheduledRedelivery(retryPolicy));
                    });
            });
        });

其中ISagaEvent是由saga处理的消息。我是不是做错了什么,有没有办法为saga配置预定的重新交付?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-27 11:55:11

要在saga中进行调度,通常最好使用实际的状态机调度特性,因此saga的状态会被更新以指示重新交付。

从本质上讲,如果您接收到的事件处于尚未准备好的状态,请使用Schedule()将消息安排在将来saga可能处于可以处理的状态的某个时间。

文档中有一个很好的时间表示例:http://masstransit-project.com/MassTransit/advanced/sagas/automatonymous.html

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48437272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档