我有一个Tokio TCP后端应用程序,该应用程序在收到请求后,简要地从Redis中读取内容,将内容写入PostgreSQL,通过HTTP上传内容,将内容发送到RabbitMQ等。处理每个请求需要很多时间时间,因此将为每个请求创建一个单独的任务。由于在异步模型中无法共享连接,因此需要一些连接池。目前,在每个请求上都建立了新的连接,这非常繁琐。
我一直在寻找Rust中的异步连接池实现,但没有找到最新的。
我想听听一些有关如何自己实施的建议。
我想出的唯一主意是:
Stream/Sink
对象。这是LIFO还是FIFO无关紧要,因为连接是相同的。在应用程序启动时,将分配N个连接。 所以我有两个问题,我无法在任何地方找到正确的答案:
我必须/可以/应该以某种方式在任务之间共享流/接收池吗?无论如何,我在Shared
的板条箱中看到了一些futures
期货。
tokio / futures教程中有一些令人沮丧的地方。例如。它没有解释如何通知最重要的任务,即如何实现神话般的最内在的未来,它本身并没有汇集任何东西,但仍然必须通知最上层的未来。
还是我的方法完全错误?我可以自己开始玩,但我强烈怀疑自己错过了一些东西,例如一键式解决方案。