让“一个”端点服务于多种“类型”的请求有什么问题吗?

问题描述 投票:-1回答:1

例如,我有一些披萨送货服务。它可以做的事情的类型是

  • CreateOrder
  • CancelOrder
  • GetOrderStatus

例如。我的服务的API层可能会将它们公开为“单独的”端点,例如/order (POST)/order (DELETE)等,并且它们以某种方式路由到处理请求的工作层。

可以让工作人员通过单个消息队列(消息类似于)接收请求吗?>

{
    id: "47a4aa26-295c-4163-9701-b6c20863643a",
    type: "order-create",
    payload: {
         size: "xl",
         toppings: ["canadianBacon", "pineapple"]
    }
}

{
    id: "4278dd527-6c4f-4bee-b8f6-0871af0b39ce",
    type: "order-cancel",
    payload: {
         orderId: "dff1b7e4-0c07-4327-8590-ac71065f32e5",
         cancellationDate: "Mon Oct 14 2019 09:24:20 GMT-0700 (Pacific Daylight Time)"
    }
}

而不是让消息的每个type都进入“单独的”队列(如果使用Azure服务总线,则不是其他类型的“单独的”抽象/基础结构,例如topic

)。

[我喜欢这样的是,每当我想要我的披萨外卖服务具有一种新型的业务功能时,我只需定义一个新的typepayload合同并编写一个新的处理程序,就不需要创建任何新的基础架构/路由/等。

例如,我有一些披萨送货服务。它可以执行的操作类型例如是CreateOrder CancelOrder GetOrderStatus。我的服务的API层可能会将其公开为“ ...

design-patterns service architecture message-queue messaging
1个回答
0
投票

我认为,只要您在工作层有多个使用者,并且您的队列具有至少一次传送方式,就应该有任何问题。

© www.soinside.com 2019 - 2024. All rights reserved.