如何使用MongoDB创建发布/订阅应用程序? 介绍

本文详细介绍了如何利用MongoDB的上限集合和尾游标特性创建一个发布/订阅应用程序,无需额外的消息代理。通过创建上限集合、编写Node.js代码实现可尾游标监听,以及展示如何结合socket.io将消息推送给用户,构建了一个基础的实时通讯系统。
摘要由CSDN通过智能技术生成

在本文中,我们将看到如何创建一个发布/订阅应用程序(消息,聊天,通知),它完全基于MongoDB(没有任何消息代理,如RabbitMQ,JMS等)。

因此,需要做些什么来实现这样的目标:

  • 应用程序“发布”消息。 就我们而言,我们只是将文档保存到MongoDB中
  • 另一个应用程序或线程订阅这些事件,将自动接收消息。 在我们的案例中,这意味着应用程序应该自动从MongoDB中接收新创建的文档

通过MongoDB的一些非常酷的功能,所有这些都是可能的: 加盖的集合和可尾的游标

上限集合和尾光标

如您在文档中所看到的,上限集合是固定大小的集合,其工作方式类似于循环缓冲区:一旦集合填满了分配的空间,它就会通过覆盖最旧的文件来为新文件腾出空间。

可以使用Tailable游标查询MongoDB上限集合,该游标类似于unix tail -f命令。 您的应用程序继续将文档插入集合中,以获取文档。 我也喜欢称其为“连续查询”。 现在我们已经了解了基础知识,让我们实现它。

构建一个非常基本的应用程序

创建收藏

首先要做的是创建一个新的有上限的集合:

$> mongo

use chat

db.messages.drop()

db.createCollection('messages', { capped: true, size: 10000 })

db.messages.insert({"type":"init"});

为简单起见,我使用MongoDB Shell在聊天数据库中创建消息集合。

您可以在第7行上看到如何创建具有上限的集合,其中包含2个选项:

  • capped:true:这个很明显
  • size:10000:创建上限集合时,这是必选选项。 这是最大大小(以字节为单位)。 (将提高到256的倍数)

最后,在第9行上,我插入了一个虚拟文档,这也是强制执行的,以便能够使可尾游标起作用。

编写申请

现在我们有了集合,让我们编写一些代码。 首先在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值