Asynchronous 从客户端使用异步微服务的推荐模式?

Asynchronous 从客户端使用异步微服务的推荐模式?,asynchronous,microservices,Asynchronous,Microservices,所以我们的用例是有一个非常昂贵的微服务(运行需要时间)。此服务由任何客户端使用 我已经阅读了一些消费最佳实践模式,例如: 使用WebSocket—这将使服务器能够将结果发送回客户端 持续轮询(我不太喜欢) 租约-这是一种轮询-客户端将获得X分钟的租约,并将每隔几分钟续订一次,直到收到响应-但如果响应返回,客户端仍将不得不等待它(尽管结果已经准备好)-这将使清理更容易(放弃请求的客户端) 我很想听听您在这个事件驱动的微服务体系结构中的最佳实践 谢谢 听起来你需要一个pubsub框架/产品,例如Ac

所以我们的用例是有一个非常昂贵的微服务(运行需要时间)。此服务由任何客户端使用

我已经阅读了一些消费最佳实践模式,例如:

  • 使用WebSocket—这将使服务器能够将结果发送回客户端
  • 持续轮询(我不太喜欢)
  • 租约-这是一种轮询-客户端将获得X分钟的租约,并将每隔几分钟续订一次,直到收到响应-但如果响应返回,客户端仍将不得不等待它(尽管结果已经准备好)-这将使清理更容易(放弃请求的客户端)
  • 我很想听听您在这个事件驱动的微服务体系结构中的最佳实践


    谢谢

    听起来你需要一个pubsub框架/产品,例如ActiveMQ、RabbitMQ、ZeroMQ(NetMQ)或者甚至Redis pubsub/queues

    你提到的客户端也是一个微服务吗?@WillC nope,尽管可能是。我看到,通常使用带有轮询的方法,但我感兴趣的是,如何向“客户”发布主题?客户机通常需要轮询是否有任何主题指向他,除非保持固定连接。客户机可以在运行时创建自己的主题,并且在向服务发出请求时可以将主题作为返回地址。服务处理请求并在完成时发布响应。不涉及投票。都是异步的。有了pubsub和queues,有很多方法可以实现异步通信问题是,返回地址是什么?服务器是否需要连接到可能可疑的地址并将数据发送到该地址?现在,您还可以让客户端支持通过他们提供的URL获取响应-我不确定它的最佳做法是什么…返回地址是一个主题名,例如client:123。它不是URL或IP地址。基本假设是,客户端和服务彼此之间都有一个开放的套接字,或者更可能是一个公共的消息代理service@simpsojo我认为还有一个要求不符合,那就是客户端可能是UI客户端(@ArielB,如果我错了,请纠正我,但在你提到的问题中在这种情况下,WebSockets解决方案似乎是两个世界中最好的。