rabbitmq交换是否有ttl选项?

rabbitmq交换是否有ttl选项?,rabbitmq,Rabbitmq,TTL可以设置在队列上,因此如果不使用队列,它们将在一段时间后过期。交易所是否也有类似的选择 我正在尝试构建一个社交应用程序,每个交换代表一个用户。每次有人想向该用户发送消息时,他都会将消息发送到用户交换。若用户数量变大,比如2000万用户,系统中将有2000万个交换。恐怕太多的交流会使系统降级。相反,我只想为在线用户保持交流。 顺便说一句,只有当用户在线时,这些消息才有价值,我不想存储消息以备日后发送。为每个用户单独交换消息未免太过分了。尝试不同的方法 使用单个直接交换 当客户端联机时,它会

TTL可以设置在队列上,因此如果不使用队列,它们将在一段时间后过期。交易所是否也有类似的选择

我正在尝试构建一个社交应用程序,每个交换代表一个用户。每次有人想向该用户发送消息时,他都会将消息发送到用户交换。若用户数量变大,比如2000万用户,系统中将有2000万个交换。恐怕太多的交流会使系统降级。相反,我只想为在线用户保持交流。
顺便说一句,只有当用户在线时,这些消息才有价值,我不想存储消息以备日后发送。

为每个用户单独交换消息未免太过分了。尝试不同的方法

  • 使用单个
    直接
    交换
  • 当客户端联机时,它会创建一个新的独占、自动删除队列并从中消费
  • 客户端还使用用户名作为路由密钥将单个exchange绑定到其队列
  • 生产者将消息发布到单个呼气机,并将用户名作为消息的路由密钥
这将自动

  • 仅为在线用户和用户保留队列
  • 放弃脱机用户的邮件
编辑:如果用户能够使用多个客户端,则可以使用上述方法

  • 每个客户机都会创建一个新的exclusi自动删除队列,并如上所述使用该队列
  • 它将单个交换绑定到此队列,如上所述

请注意,可以使用相同的路由键从exchange进行多个绑定。每个客户端都有自己的队列和绑定,即使此绑定上的路由密钥与其他客户端创建的另一个绑定上的路由密钥相同。

谢谢。您的建议在这种情况下确实有效,但是关于我们的设计还有一些额外的信息。每个用户都可以从不同的客户端访问应用程序。例如,来自移动设备和PC,因此每个设备都需要一个单独的队列,这样用户可以同时在两个客户端上接收消息。顺便问一下,有没有在交换机上指定ttl的解决方案?