Xbus has been implemented to deliver messages to Odoo ERP/to carry messages from Odoo ERP to other programs for several of our clients. Therefore, we created a specific connector combined with an Odoo plug-in to help Odoo and Xbus communicate with each other.
An Odoo-dedicated connector
The Xbus-Odoo connector developed by our teams enables both to import into Odoo Open-Source ERP messages emitted by an application and carried by Xbus and to convey data from Odoo to the bus. This Xbus 3-compatible connector is written in Go and works along with the x_data_loader plug-in.
Data transit through a Redis server
The solution we usually implement includes a server equipped with Redis data management system, which has been inserted between Xbus and Odoo to keep good performances. The Xbus-Odoo connector sends Xbus messages to Redis. Thanks to this connector, the bus progressively sends messages in a random order to Redis, which stores them until the transaction is completed. Then, Odoo receives at once all the data related to the transaction.
When data comes from Odoo (the reverse order compared to the example presented above), messages do not pass through Redis.
Advantages of such an architecture:
- Odoo only receives complete and consistent transactions: Odoo does not receive an envelope from Redis before it is complete. This method enables to avoid error messages about data missing in Odoo database,
- Odoo keeps its performances: thanks to a unique sending per transaction, the ERP is not affected by the possibly long time it takes to each piece of data to be processed. Therefore, it keeps its performances,
- Application independence: Xbus messages being stored in Redis, the server is able to send a transaction to Odoo even if the bus has temporarily been turned off,
- An alternative to several XML-RPC calls: this architecture enables to avoid using XML-RPC, a protocol that can only transport a limited amount of data.
The Xbus-Odoo connector and the x_data_loader plug-in make it easy to deliver Xbus messages to Odoo through a Redis server. The use of Redis brings many advantages in terms of performances and increases application independence.