.net 大众运输传奇再交付
我想使用独立的quartz调度器为状态机saga设置消息调度重新交付。现在,它可以很好地与普通消费者,但我不能设置为传奇重新交付正确。我的传奇配置如下所示:.net 大众运输传奇再交付,.net,rabbitmq,masstransit,saga,.net,Rabbitmq,Masstransit,Saga,我想使用独立的quartz调度器为状态机saga设置消息调度重新交付。现在,它可以很好地与普通消费者,但我不能设置为传奇重新交付正确。我的传奇配置如下所示: MassTransit.Bus.Factory.CreateUsingRabbitMq(cfg => { var retryPolicy = Retry.Incremental(5, TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(2));
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));
});
});
});
MassTransit.Bus.Factory.CreateUsingRabbitMq(cfg=>
{
var retryPolicy=Retry.Incremental(5,TimeSpan.FromSeconds(5),TimeSpan.FromSeconds(2));
UseMessageScheduler(新Uri($)rabbitmq://localhost/SchedulerQueue"));
var host=cfg.host(新的Uri,h=>
{
h、 用户名(config.RabbitMqUser);
h、 密码(config.RabbitMqPassword);
});
ReceiveEndpoint(主机,“SagaQueue”,e=>
{
e、 持久=真实;
e、 StateMachineSaga(新MySaga(),
存储库,c=>
{
c、 使用事务();
c、 消息(y=>y.UseScheduledRedelivery(retryPolicy));
});
});
});
其中ISagaEvent是由saga处理的消息。我是否做错了什么,是否有办法为传奇配置计划的重新交付?要在传奇中进行计划,通常最好使用实际状态机计划功能,以便更新传奇的状态以指示重新交付 本质上,如果您接收到的事件状态尚未准备就绪,请使用
Schedule()
将消息安排在将来某个时间,当事件可能处于可处理状态时
文档中有一个很好的时间表示例: