3
尝试推迟单向客户端发送消息时出现以下异常的原因是什么 System.InvalidOperationException“不能使用我们自己作为超时管理器,因为我们是单向客户端“为什么我不推迟给单向客户端发送消息
尝试推迟单向客户端发送消息时出现以下异常的原因是什么 System.InvalidOperationException“不能使用我们自己作为超时管理器,因为我们是单向客户端“为什么我不推迟给单向客户端发送消息
单向客户端是不能接收消息的Rebus客户端,因此它没有输入队列。
await bus.Defer(...)
的工作方式是通过向“超时管理器”发送带有some special headers的消息,该超时管理器默认为延迟消息的端点。
但由于单向客户端没有输入队列,所以没有地方发送延迟消息。
你可以做一个单向的客户端通过配置外部超时经理这样推迟的消息:
Configure.With(...)
.(...)
.Options(o => o.UseExternalTimeoutManager(anotherQueue))
.Start();
那么这将导致客户端递延消息发送到该队列。
此外,你就必须在rbs2-defer-recipient
头手动设置为其他输入队列,使超时经理知道向何处发送消息时,是时候要消耗的(*)。
我希望能解释它:)请让我知道如果它不清楚。
*)这实际上是不卤面4的情况下,因为bus.Defer
使用的普通的终端映射到路由消息。