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