Xmpp 哪种解决方案能够更好地处理发布者/订阅者场景?
这个场景是publisher/subscriber,我正在寻找一个解决方案,它可以让一个生产者跨多个消费者实时发送一条消息。一个解决方案可以处理的重量越轻越好 在AMQP服务器的情况下,我只签出了Rabbitmq并使用Rabbitmq server for pub/sub模式,每个使用者都应该声明一个匿名的私有队列并将其绑定到扇出交换,因此,在数千个用户实时消费一条消息的情况下,Rabbitmq将处理数千个左右的匿名队列 但我真的不喜欢rabbitmq的方法,如果rabbitmq能够处理一个队列、一条消息、多个消费者在一个队列上侦听的发布/订阅场景,那将是理想的 我想问的是,哪种AMQP服务器或其他类型的解决方案(任何类似的解决方案,包括XMPP服务器或Apache Kafka或…)比RabbitMQ更好、更高效地处理发布/订阅模式/场景,同时消耗(当然)更少的服务器资源 按兴趣顺序排列的偏好:Xmpp 哪种解决方案能够更好地处理发布者/订阅者场景?,xmpp,rabbitmq,publish-subscribe,amqp,apache-kafka,Xmpp,Rabbitmq,Publish Subscribe,Amqp,Apache Kafka,这个场景是publisher/subscriber,我正在寻找一个解决方案,它可以让一个生产者跨多个消费者实时发送一条消息。一个解决方案可以处理的重量越轻越好 在AMQP服务器的情况下,我只签出了Rabbitmq并使用Rabbitmq server for pub/sub模式,每个使用者都应该声明一个匿名的私有队列并将其绑定到扇出交换,因此,在数千个用户实时消费一条消息的情况下,Rabbitmq将处理数千个左右的匿名队列 但我真的不喜欢rabbitmq的方法,如果rabbitmq能够处理一个队列
谢谢。一般来说,对于
RabbitMQ
,如果您将用户放入路由键
,您应该能够使用单个交换
,然后使用少量队列
(如果您愿意,甚至可以是一个,但您可以按服务器或类似的方式将它们分开,如果您的设置合理的话)
如果您不需要保证顺序
(比如说,保证FK约束不会因为对各种SQL数据库表的一系列更改而受到影响),那么就没有理由不能让一群使用者从单个队列中绘制
如果您想要一种广播消息类型的场景,那么处理方式可能会有所不同。除了可以用于非广播类型消息的路由键
中的单个用户之外,您还可以使用一种特殊的用户类型,比如说,\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu,没有用户可以实际拥有,并且拥有要广播的用户与消息本身一起存储在消息的有效负载中
然后,您的消息处理代码可以负责将该消息存放在所有这些用户的数据库(或任何最终目的地)中
根据OP的评论进行编辑:
因此,路由键
可能看起来像这样的消息。[user]其中,[user]可能是实际用户,如果它是点对点消息,并且是一个特殊的\uuuuuuuuuuuuuuuuuuuuuuuuuu用户(或实际用户不允许注册的类似用户名)这将指示广播风格的消息
然后,您可以在消息的有效载荷
中放置消息应发送给的用户,然后将该消息内容(也将在有效载荷
中)可以发送给每个用户。这样做的机制取决于您的最终目的地是什么。例如,消息是否最终存储在Postgres
、或Mongo DB
或类似文件中?您能更准确地说吗?您所说的将用户放入路由键中是什么意思?我不知道它与交换的关系e和少量队列。如果您能解释得更多,我们将不胜感激。如前所述,场景是通过单个队列向所有消费者发送一条消息,确保所有消费者都收到该消息的副本,以及之后的消息。如果您可以指向任何类型的文档,也可以。顺便说一下,t谢谢你的回答:)上面澄清了;还需要询问消息的最终目的地是什么。