我试图在 MassTransit 状态机传奇中使用调度程序而不直接指定调度程序服务地址。
我UseMessageScheduler
在总线配置中使用它,它工作正常,因为我可以context.Schedule
从我的消费者内部进行。
但是,它在 sagas 中不起作用。当我尝试做时.Schedule
,我收到此错误:
指定了请求超时,但没有指定或可用的消息调度程序
我检查了 MT 代码,我看到了这个:
MessageSchedulerContext schedulerContext;
if (_request.Settings.SchedulingServiceAddress != null)
{
ISendEndpoint scheduleEndpoint = await consumeContext.GetSendEndpoint(_request.Settings.SchedulingServiceAddress).ConfigureAwait(false);
await scheduleEndpoint.ScheduleSend(consumeContext.ReceiveContext.InputAddress, expirationTime, message).ConfigureAwait(false);
}
else if (consumeContext.TryGetPayload(out schedulerContext))
await schedulerContext.ScheduleSend(message, expirationTime, Pipe.Empty<SendContext>()).ConfigureAwait(false);
else
throw new ConfigurationException("A request timeout was specified but no message scheduler was specified or available");
那么,实际上有一个分支应该正常从配置中获取调度器地址,但是为什么不起作用呢?