Таким образом, у меня есть ситуация с микросервисной архитектурой, где я должен гарантировать, что входящие сообщения, имеющие общий идентификатор, будут обрабатываться в порядке их поступления от kafka:
message2, message1 kafka
------------------------------
|message1 |message2
| |
Instace1 Instance2
В приведенном ниже примере я имеюдва экземпляра службы, которые обрабатывают сообщения от kafka, но я хочу убедиться, что message2
обрабатывается только после message1
.
По-видимому, эту ситуацию легко решить, настроив один экземпляр для потребления только отконкретный раздел, который будет хранить сообщения с общим неопределителем:
message2, message1 kafka
--------------------------------
| message2
| message1
Instance1 Instance2
Теперь порядок гарантирован, и message2
никогда не будет обработан до message1
.
Однако я былХотите знать, можно ли решить эту проблему другим способом, прямо в коде, а не полагаться на инфраструктуру?Похоже, что это может быть стандартной проблемой в микросервисной архитектуре, но я не уверен, что было бы предпочтительным подходом для ее решения?