3
我正在建立一个网站,该网站接收关于足球比赛的实时更新。我正在使用RabbitMQ将更新发送到客户端(JS网站和Android/iOS应用程序)。AMQP/RabbitMQ - 只有实时消息/传递队列
客户端应该只接收实时更新。换句话说,客户端只应在用户登录时接收更新。不保存历史记录。
为了实现这种行为,我在想下面的架构:
- 在RabbitMQ的扇出交换。
- 每个用户都有一个专用队列,绑定到交换机。该队列在创建用户帐户时创建。
- 对于这些队列,设置值为0的队列属性
x-message-ttl
。见下文。 - 当用户登录时,客户端将消耗相应用户的队列。
- 消息由后端发送到交换机,并转发到所有队列。当用户没有登录,消息会被立即丢弃,因为
x-message-ttl
设置为0
这是AMQP的正确用法/ RabbitMQ的,以实现实时通知?
如果队列是在登录后创建的,那么这是否意味着队列应该声明为“auto-delable”? –
登录是指登录到您的网站或登录 - 建立与RMQ的连接?如果您不希望用户登录(从网站/ web应用程序)登录时错过的消息,而不是自动删除。 – cantSleepNow
谢谢,现在明白了。我不明白队列是要在运行中创建/删除的。我认为队列应该或多或少是静态的。我会试试看。 –