我正在探索同时使用 Rebus 和 RabbitMQ 来涵盖几个不同的场景。
场景 A 我希望能够让中央服务器将通知推送到任意订阅者的列表,但这些消息不需要是持久的或持久的。如果订阅者已连接,他们应该会收到通知,但如果他们断开连接,则无需为任何客户端排队消息。
到目前为止,在我的测试中,我能够让生产者和消费者与之通信UseRabbitMqInOneWayMode()
,ManageSubscriptions()
但是,当没有订阅者或订阅者断开连接时,消息会在 RabbitMQ 中建立。我尝试将标头设置为 false RabbitMqMessageQueue.InternalHeaders.MessageDurability
,但没有效果。我怀疑这是因为 Rebus 设置的默认队列是持久的。Rebus 中有没有办法控制这种行为?
场景 B 当客户端上线或断开连接时,我想在客户端之间建立一个请求/回复通道。例如:
- 客户端 A 和客户端 B 连接
- 客户端 A 将发送一条消息,请求只有客户端 B 拥有的数据。客户 B 收集信息,然后回复给 A。
- 客户端 B 断开连接
- 客户端 A 向客户端 B 请求数据,并且由于 B 不再可用而应收到错误消息。
这种情况下推荐的配置是什么?
谢谢。