我目前正在尝试在我将要开发的REST服务上实现微服务架构。 REST服务将与第三方SOAP服务以及我将创建的另一个组件进行通信,以执行其他业务规则验证。我计划将应用程序拆分为三个不同的组件:客户端将向其发送请求的Web API,将调用第三方SOAP服务的Windows服务以及用于执行业务规则验证的Windows服务。我计划使用actor模型(Akka.net)和消息总线(NServicebus或RabbitMQ + Mass Transit)的组合。
根据我的理解,消息传递用于fire和forget命令,因此Web API项目无法使用它,因为客户端期望得到API调用的响应,我不知道如何等待从客户端请求中的Bus / Queue接收消息到Web API,因为Web API需要离开,以便在请求中侦听来自总线的事件。
我的问题是,我对消息队列如何运作的理解是否正确?而且,我将不得不使用基于Akka.net的微服务来接受来自Web API的调用并将响应返回给API?
答案 0 :(得分:1)
从技术上讲,您可以使用请求 - 响应,请参阅shorthand。但是,在遗留应用程序或情况确实需要的特定情况下,应谨慎使用该方法。
通常,为了充分受益于消息传递,其可靠性和可扩展性,您应该将解决方案重新设计为异步。如果您需要响应,则使用请求 - 响应模式(即发送两个单向消息而不是使用回调),或者查看SignalR等技术。 example here和Here网络研讨会正在讨论如何更详细地将前端应用与消息传递相关联,我希望您会发现它们有用。