Я пытаюсь внедрить очереди в нашу микросервисную архитектуру, а именно AWS SNS / SQS.
Например, у меня есть этот сценарий.
После создания заказа Orders MS вызывает событие OrderCreated, и это событие публикует сообщение в AWS OrderCreated SNS. Очередь SQS InvoiceCreate подписана на OrderCreated SNS и получит это сообщение.
Бедствие делает сцену до сих пор. Если Invoicing MS прослушивает InvoiceCreate queueu и извлекает все новые сообщения - Invoicing MS должен создать счет, но у меня вопрос к каким данным?
а) связаться с Заказом MS (для заказа данных, актуальных для создания счета). Если это невозможно, сообщение будет оставаться в очереди до тех пор, пока MS Invoicing не сможет собрать соответствующие данные
б) опубликованное сообщение должно содержать все соответствующие данные, необходимые для создания счета.
При выборе MS Invoicing MS не будет отделяться и будет зависеть от Заказа MS, но, с другой стороны, он может собирать дополнительные данные, отличные от данных, упакованных с исходным сообщением.
При выборе B, поскольку событие OrderCreated и OrderCreated SNS действительно не знают, кто будет использовать данные сообщения, т.е. OrderCreated также может быть использован для выполнения различных действий, я запутался, как точно решить, какие данные должны быть вставлены в это сообщение