我想推迟要发布的消息,但 Rebus 将消息返回到发送队列。我期待它将它们发送给实际的收件人。
我在这里做错了什么还是我理解延迟功能错误?
这就是bus.Defer
工作原理 - 它将消息发送到消息Headers.ReturnAddress
头中指定的返回地址,默认情况下设置为发送者的输入队列。
您可以通过显式设置消息的返回地址,让超时管理器将消息发送到其他地方,如下所示:
// specify which address to reply to
bus.AttachHeader(msg, Headers.ReturnAddress, "somewhereelse");
// defer the message
bus.Defer(toTheFuture, msg);
但在您的情况下,由于您希望发布消息,我建议您只需添加一个本地处理程序,该处理程序在超时管理器返回消息时发布消息。