RabbitMQ:新邮件通知模型

时间:2017-11-09 04:14:44

标签: rabbitmq

我正在写一个webmail服务器。我使用websockets为客户端发送新的邮件通知。

当新电子邮件到达服务器时,我想通知所有网络客户端以了解该特定用途。即用户可能打开多个浏览器窗口。

你能告诉我如何使用rabbitmq建模吗?

我要么是为每个用户创建一个扇出交换,这听起来没有资源效率,或者只有一个扇出交换而且所有客户端都连接到那个,所以所有客户端都收到所有电子邮件通知,而不是听起来也不错。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

由于您要将所有到达网络邮件服务器的邮件发送给订阅它的所有客户,我认为扇出是更好的邮件交换选项。扇出交换将消息路由到绑定到它的所有队列。我想使用{{1}}向特定用户发送特定邮件。

direct

在此设置中,我们可以看到直接交换X与两个绑定到它的队列。第一个队列绑定橙色绑定,第二个绑定有两个绑定,一个绑定密钥为黑色,另一个绑定为绿色。

在这样的设置中,使用路由密钥orange发布到交换机的消息将被路由到队列Q1。路由键为黑色或绿色的消息将转到Q2。所有其他消息都将被丢弃。

多重绑定(与扇出相同)

multiple-binding

使用相同的绑定密钥绑定多个队列是完全合法的。在我们的示例中,我们可以在X和Q1之间添加绑定键黑色的绑定。在这种情况下,直接交换将表现得像扇出一样,并将消息广播到所有匹配的队列。路由密钥为黑色的消息将传送到Q1和Q2。