带有aerospike和node.js的任务管理器

带有aerospike和node.js的任务管理器,node.js,rabbitmq,message-queue,aerospike,Node.js,Rabbitmq,Message Queue,Aerospike,我正在网络应用程序中使用node.js和aerospike。 当用户发布、提及或关注我必须在时间线或/和通知上完成的工作时。 我想在node.js向客户端发送响应后运行这些作业 我经常谈论任务管理器和消息代理,但我不确定是否理解它们 因此,我的问题是,node.js中的操作是异步的,aerospike是同步的,多线程->将响应发送到客户端,然后使用aerospike执行这些作业是一个坏主意吗(或者复制、云等可能会丢失一些东西) 或者我被迫使用RabbitMQ,比如?node.js的异步性不会干扰

我正在网络应用程序中使用node.js和aerospike。 当用户发布、提及或关注我必须在时间线或/和通知上完成的工作时。 我想在node.js向客户端发送响应后运行这些作业

我经常谈论任务管理器和消息代理,但我不确定是否理解它们

因此,我的问题是,node.js中的操作是异步的,aerospike是同步的,多线程->将响应发送到客户端,然后使用aerospike执行这些作业是一个坏主意吗(或者复制、云等可能会丢失一些东西)


或者我被迫使用RabbitMQ,比如?

node.js的异步性不会干扰Aerospike服务器的同步性。这只是客户端的行为和API的设计方式。它不会影响服务器端的功能。一些Aerospiks客户机(如java)同时提供同步和异步API


说到问题的后半部分,您似乎在考虑先回复客户,然后在Aerospike上触发一项工作。这不是aerospike特有的,但我看到的唯一风险是,您可能会向客户端发送一条“成功”消息,但服务器端作业可能会因任何原因(超时、内存/磁盘已满、网络故障、服务器关闭等)而失败。如果你同意这个风险,我看不到任何其他重大问题

这就是我想做的,但处理错误的案例:基本上我支持社交网络实现。我需要当一个用户发布一张图片或视频后,在后台处理AmazonS3上的上传,并在追随者的时间线中添加帖子的id。在后台,我将处理出现错误的情况。我更熟悉任务经理,因为我已经发布了我的问题。我没有看到其他解决方案?任务/队列管理器也存在同样的风险。不是吗?如果由于任何原因无法将任务排队,该怎么办?通常,这是一种更安全的方法。这将导致更高的延迟,但风险较小。这是一种权衡。如果您有一种不同的方法来协调错误,并且想要更好的延迟,那么您最初的想法是好的。