Ruby on rails RabbitMQ:将消息标记为已过时

Ruby on rails RabbitMQ:将消息标记为已过时,ruby-on-rails,message,rabbitmq,Ruby On Rails,Message,Rabbitmq,全局问题:我们能否在客户端使用消息之前将其标记为已过时 背景: 我有一组机器 每台机器在发生变化时都会发送消息 消息是已更改的Rails对象 客户端在收到此消息时,只需保存它 情景 给定3台机器A、B和C 给定对象O属于机器A A网络断开 机器A上的对象O有很多变化 当网络再次启动时,我想取消所有关于O的消息,除了最后一条(生产者端或消费者端)。 因此,B和C不会保存O对象的所有状态,而只保存最后一个状态 问题: 你认为有可能吗 有没有更好的方法实现同步(我们不想使用MySQL集群)

全局问题:我们能否在客户端使用消息之前将其标记为已过时

背景:

  • 我有一组机器
  • 每台机器在发生变化时都会发送消息
  • 消息是已更改的Rails对象
  • 客户端在收到此消息时,只需保存它
情景

  • 给定3台机器A、B和C
  • 给定对象O属于机器A
  • A网络断开
  • 机器A上的对象O有很多变化
当网络再次启动时,我想取消所有关于O的消息,除了最后一条(生产者端或消费者端)。 因此,B和C不会保存O对象的所有状态,而只保存最后一个状态

问题:

  • 你认为有可能吗
  • 有没有更好的方法实现同步(我们不想使用MySQL集群)

谢谢。

我们正在做一些silimar(在.net中)操作,但是如果一个节点离开网络或重新启动,那么当它返回时,它所做的第一件事就是要求所有其他节点都返回状态upadte。所有节点将此消息发送到所有节点。然后,我们使用时间戳仅在消息比最后一个处理的消息更近时才对其执行操作。对于我们需要的5个工作节点,它们都具有相同的配置,并且在它们之间同步任何技术,看起来工作正常。

事实上,我们有一个具有持久队列和消息的计算机集群。所以,当节点再次启动时,它会自动接收所有丢失的消息(AMQP逻辑)。但我不希望节点处理超过x条旧消息。因为消息#1001可能会过时消息#900、#850、#800。。。我想最好的选择是,如果有比潜在消息目标更多的消息,则清理我的队列。这将表明可能存在废弃消息,完全重新初始化状态可能会更轻松。。。