Скажем, например, у меня есть служба доставки пиццы. Типы вещей, которые он может делать, например:
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 Service Bus).
Что мне нравится в этом, так этовсякий раз, когда есть новый тип бизнес-возможностей, который мне нужен для службы доставки пиццы, я просто определяю новый type
и payload
контракт и пишу новый обработчик, не нужно создавать какую-либо новую инфраструктуру / маршрутизацию / и т.д. .