3

我想推迟要发布的消息,但 Rebus 将消息返回到发送队列。我期待它将它们发送给实际的收件人。

我在这里做错了什么还是我理解延迟功能错误?

4

1 回答 1

3

这就是bus.Defer工作原理 - 它将消息发送到消息Headers.ReturnAddress头中指定的返回地址,默认情况下设置为发送者的输入队列。

您可以通过显式设置消息的返回地址,让超时管理器将消息发送到其他地方,如下所示:

// specify which address to reply to
bus.AttachHeader(msg, Headers.ReturnAddress, "somewhereelse");

// defer the message
bus.Defer(toTheFuture, msg);

但在您的情况下,由于您希望发布消息,我建议您只需添加一个本地处理程序,该处理程序在超时管理器返回消息时发布消息。

于 2015-04-29T11:35:59.903 回答