webman异步请求其他服务方案咨询

leedom

问题描述

1.目的

webman所在服务需要将文件fopen($file, 'rb')转为二进制传递给另外一个服务, 目前使用Http::attach实现; 对方服务处理完成后将结果同步返回, 然后webman进行后续处理

2.问题

由于文件大小问题和对方服务处理速度问题, 使用Http::attach会导致超时请求失败(预计处理时间超过分钟级别); 所以要实现异步方案来进行通信处理.

为此你搜索到了哪些方案及不适用的原因

  • 如果使用rabbitmq队列, 文件的二进制将会非常大, 消息体的size将受到影响
  • 如果使用redis队列, 对方服务不支持该方案
  • 使用如何实现异步任务是否可以达到目的, 应该需要自定义进程配合异步请求(还是会有超时问题)

请教各位有经验的大佬给予指点

415 1 0
1个回答

hooper55

有协程 http客户端,超时可以设置。

队列的话肯定是自己实现,和对方没有关系,而且不可能吧文件内容写进队列,写个文件路径就可以了。

  • leedom 2024-05-07

    感谢回答;
    1.http客户端,超时可以设置 : 是否有文档或者方案分享可以查阅一下
    2.不可能吧文件内容写进队列,写个文件路径就可以了 : 因为对方服务不能直接访问文件或者没有提供文件url访问的问题, 所以用二进制

×
🔝