我正在探索结合使用Rebus和RabbitMQ来涵盖几种不同的情况。

方案A我希望能够有一个中央服务器将通知推送到任意订户列表,但是消息不必是持久的或持久的。 如果订户已连接,他们应该收到通知,但是如果断开连接,则无需为任何客户端排队消息。

到目前为止,在我的测试中,我能够使生产者和消费者与UseRabbitMqInOneWayMode()ManageSubscriptions() ,但是,当没有订阅者或订阅者断开连接时,消息会在RabbitMQ中累积。 我已经尝试将RabbitMqMessageQueue.InternalHeaders.MessageDurability的标头设置为false,但是它没有任何效果。 我怀疑这是因为Rebus设置的默认队列是持久的。 Rebus中是否可以控制这种行为?

方案B当客户端联机或断开连接时,我想在客户端之间设置请求/答复通道。 例如:

  1. 客户端A和客户端B连接
  2. 客户端A将发送一条消息,要求仅客户端B拥有的数据。 客户端B收集信息,然后回复给A。
  3. 客户端B断开连接
  4. 客户端A向客户端B请求数据,并且应收到错误消息,因为B不再可用。

在这种情况下,推荐的配置是什么?

谢谢。

#1楼 票数:1 已采纳

我不是RabbitMQ的专家,因此对RabbitMQ的Rebus支持主要来自社区的贡献。

我认为,尽管可以使用RabbitMQ的“自动删除队列”概念来轻松解决方案A,您可以使用Rebus这样配置它:

Configure.With(...) .Transport(t => t.UseRabbitMq(...) .ManageSubscriptions() .AutoDeleteInputQueue()) .(..)

当最后一个订阅者断开连接时,这会导致RabbitMQ删除队列。

在方案B中,对我来说,听起来好像您最好使用用于同步通信的东西,因为这是您真正想要的。 我建议您使用HTTP,因为它非常擅长进行请求/回复:)

  ask by Rob translate from so

未解决问题?本站智能推荐:

1回复

Rebus停止从RabbitMQ检索消息

我们的Rebus / RabbitMQ设置中存在一个问题,即Rebus突然停止从RabbitMQ检索/处理消息。 这在上个月发生了两次,我们不确定如何进行。 我们的RabbitMQ设置在不同服务器上有两个节点,并且Rebus端是Windows服务。 在Rebus或运行Rebus的服
1回复

Rebus 可以配置为将错误队列类型设置为 RabbitMQ 中的仲裁吗?

我们有一个三节点的 RabbitMq 集群,我们使用 Rebus 来生成和使用来自 Rabbit 的消息。 我们处理的消息在数据安全方面至关重要,因此我们在 RabbitMq 中使用仲裁队列。 现在的问题是,即使我们有一个兔子集群,我们也有一个单点故障; 它发生在承载 Rebus 错误队列的节点变
1回复

使用RabbitMQ进行Rebus接受来自Python的请求

我正在设置一个使用Rebus从RabbitMQ读取的.NET核心服务。 似乎放置在RabbitMQ中的请求需要具有.NET对象名称空间信息。 有没有办法解决此问题。 例如,如果我有一个用Python编写的服务,将项目放在队列中,则可以读取和处理这些请求。 似乎每次我测试并尝试发送.NET
1回复

Rebus和RabbitMq似乎总是使用“ RabbitTopics”交换

我正在尝试让rebus.rabbitmq(4.4.2.0)使用特定的交换名称来通过Rabbitmq发送消息,但是无论我如何进行配置,它都将持续分布到名为“ RebusTopics”的交换中配置中的“ RebusBus”。 我在这里的配置做错了吗?
1回复

通过Rebus 2订阅rabbitmq队列

在我的应用程序中,我正在尝试订阅“MyQueue”队列,该队列在“Rebus”主题交换中使用下一个代码基于您的建议进行绑定: 因此我有一个例外 AMQP操作被中断:AMQP关闭原因,由Peer启动,代码= 404,text =“NOT_FOUND - 在vhost'/'中没有队
1回复

从失败中恢复以创建具有Rebus的RabbitMQ传输连接

我们正在使用一个简单的设置来使用Rebus订阅队列。 我们需要确保,如果RabbitMQ队列不可用(例如服务已关闭),我们可以检测到该问题并稍后重试。 我们还需要处理在成功建立连接后RabbitMQ掉线的可能性(订阅机制有可能解决此问题吗? 这是我们的示例设置; 请注意,我们使
1回复

将 Rebus 与 RabbitMQ 独占队列一起使用时出错

尝试使用 Rebus 响应 RabbitMQ 独占队列时出现以下异常。 客户端将队列声明为独占队列,并且能够成功地将消息发送到服务器。 服务器处理消息,但在发送响应时抛出异常。 我可以在 Rebus 源代码 (Rebus.RabbitMq.RabbitMqTransport.cs) 中看到它尝
1回复

在运行时为 Rebus 生成消息处理程序

我正面临一个问题,我想使用 Rebus 订阅和处理rabbitmq 中的消息。 在第三方程序集中定义了多种消息类型,并且新的消息类型将定期添加到该程序集中。 我需要以某种方式让 Rebus 订阅并处理所有这些消息类型并将它们转发(发布)到另一个 rabbitmq 实例。 我的服务本质上是转发消息,