You mentioned a microservice so I think the most "scalable" way of doing it while respecting a microservice architecture whould be to perform the monitoring in an asynchronous manner. If you don't already have one, you could setup a Message Queueing service like Google PubSub or RabbitMQ. There are a lot of differents Message Queueing service out there with specific features and performance so you'd need to make some research to find the best fit to your use case.
Once you have setup your MQ service, your Order microservice would dispatch a message like { orderId: 12345, status: 'Authorized', timestamp: 1610118449538, whatEver: 'foo' }
. That way this message could be consumed by any service registered to your specific topic (and also depending of the architecture of your MQ).
Then I would develop another microservice: the Monitoring microservice. This microservice would register to the topics dispatched by the Order microservice. This way it would be aware of any Order status changes and you could setup crons on your microservice to check i.e every 5min which orders you didn't receive the message regarding their status change and act accordingly. This microservice could communicate with your ElasticSearch. I'd also recommend you'd mutualize as much as possible of the code managing the business logic regarding the orders status changes between the Order and Monitoring microservices. You could use private NPM packages. This way you are less likely to end up with business requirements mismatches between the two microservices.
Using a MQ service allows you to scale as much as needed because you can then horizontally scale your Monitoring and Order microservices. You'd need to handle some kind of lock/semaphore mechanism between the different instances of your Monitoring service though so you don't handle the same message by multiple instances. In case of any microservices shutdown your queue would store the message to prevent data loss. Once back-up they can process the queued messages. You'd have to consider how to handle the downtime on your MQ service too.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…