Asynchronous message queuing, retries, and error handling

I’m off next week. We can aim for tomorrow and I will make it if I can. Let’s just try to have better scheduling going forward.

For anyone following this work, there’s a new PR ready for review and merge at TRUNK-6429: Create application events for service method calls and en… by rkorytkowski · Pull Request #6084 · openmrs/openmrs-core · GitHub

It adds APIs to use for application events, including aggregated events and transactional outbox.

Happy to update that embedded Debezium with cluster support is now ready for testing and review.

Please see TRUNK-6516: Provide CDC mechanism with Debezium by rkorytkowski · Pull Request #6151 · openmrs/openmrs-core · GitHub and GitHub - openmrs/openmrs-module-debezium: Adds embedded Debezium for CDC events · GitHub

You can now reliably listen to CDC events within OpenMRS without running any external service and e.g. push updates to message brokers or ElasticSearch with guarantees that you won’t miss any change even if something fails!

It uses the new OpenMRS core event bus so that listeners can be implemented in modules that have no dependencies on Debezium.

The next step that I’m starting to work on is to introduce a message broker for OpenMRS core to enable communication with external systems from core and modules with the same event bus.

See TRUNK-6515

2 Likes

Incredible work @raff - really looking forward to trying this out