1 | | [Relates to point 3 from high-level steps] It would be good to have async implementation only dependent on NCMP. So that it does not break or work with only few DMI plugins. I think a DMI plugin independent async flow would be like 1. Once request is receievdreceived, check if dmi plugin exist. If exists, generate request uuid, send the message to the Kafka topic (or store it in DB), and send an accepted response back to client. 2. NCMP will listen to the same topic or read from the DB. Process it by calling appropriate DMI Plugins synchronously. After it receives the response back, it sends to to kakfa Kafka topic provided in the input by user.
In this implementation, we are not dependent on the DMI implementation. We do need persistence for storign storing async request. It can be a stored in DB or Kafka, it does not matter as long as we can read it in the same order.
The main points are 1. No dependency on the DMI for async behaviourbehavior 2. No async request get lost because of pod restart or JVM crash. |