2016-04-14 43 views

回答

1

单向客户端是不能接收消息的Rebus客户端,因此它没有输入队列。

await bus.Defer(...)的工作方式是通过向“超时管理器”发送带有some special headers的消息,该超时管理器默认为延迟消息的端点。

但由于单向客户端没有输入队列,所以没有地方发送延迟消息。

你可以做一个单向的客户端通过配置外部超时经理这样推迟的消息:

Configure.With(...) 
    .(...) 
    .Options(o => o.UseExternalTimeoutManager(anotherQueue)) 
    .Start(); 

那么这将导致客户端递延消息发送到该队列。

此外,你就必须在rbs2-defer-recipient头手动设置为其他输入队列,使超时经理知道向何处发送消息时,是时候要消耗的(*)。

我希望能解释它:)请让我知道如果它不清楚。


*)这实际上是不卤面4的情况下,因为bus.Defer使用的普通的终端映射到路由消息。

相关问题