We need to integrate two ERP systems which have to exchange many Entities (Items, Vendors, Prices ect.) and business Documents (Purchase orders, Sales orders, Warehouse transfer orders, ect.).
The integration for each entity/document have to be:
- In only one Direction (System A -> System B or System B -> System A)
- Fast - after created/updated in one system the entity/document should be transfered the other as fast as possible
- Asyncrhonous - system that creates/updates entity/document should not wait for the other system
- Reliable - we need a confirmation from the other system that it processed the entity/document. Any errors must be reported promptly to the key users
- Performance - High throughput is required
Sample workflow:
System A: Sends a message to the "messages" queue with a unique ID and Timestamp
MessageQueue: Receives and stores the message.
System B: Consumes the message from the "messages" queue.
System B: Processes the message. If this message ID is already processed, ignore it. If Timestamp of the last processed message for the entity/document is higher, ignore it. (messages alwasy contain all fields so no possiblity to lose data if not process previous message)
System B: Sends an acknowledgment message to the "acknowledgments" queue, including the original message ID and status.
MessageQueue: Receives the acknowledgment message.
System A: Consumes the acknowledgment message from the "acknowledgments" queue.
System A: Updates its internal record based on the acknowledgment status. (mark entity/document as syncrhonised)
Do you see any potential issues with this approach? Are there other more optimised solutions?
发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744154950a4560815.html
评论列表(0条)