Hello guys ,
I want to call an external api to update my projections with some informations with this api
so , my question is what is the better place to make this call in the command side or in projection side ?
It depends a bit on the use case. If you want the command to fail in case the call fails, you should do it on the command side, or with a subscribing event handler. If it can be asynchronous you can use a streaming event handler.
Since you mention updating a projection, it seems a streaming event handler would be the best in this case. By configuring it with a propagating error handler, it will keep retrying when the external call fails. At the same time the commands still continue to work. This is likely what you want.
Streaming event processors are the default event processors. They work by reading from an event store. This decouples creating and storing the event from processing the event. Unlike a subscribing event processor where the event will be processed in the same transaction used to create and store the event.