我有一个建筑设计问题。我们公司最近为Case管理带来了一个COTS(基于.NET的产品)。该产品具有复杂的集成模块,可在每个用户操作上向MQ发出完整的案例信息XML。每个XML元素都有一个Add,Edit&删除标志以了解哪些元素已更改。
我们必须编写一个应用程序,在这些事件进入时按顺序处理这些事件,并根据已更改的内容有条件地发送给多个外部伙伴。与每个外部合作伙伴的接口在它们需要的数据,表示(XML,字符串,json等)和协议(SOAP,REST,MQ,DB调用等)方面是不同的。
有关如何设计这样的系统以及可以使用哪些技术的任何建议? (仅供参考,我们现有的技术堆栈Java / JEE,Weblogic)。
PS。 我遇到的主要问题是,如果其中一个合作伙伴失败,我们就不应该拒绝其他合作伙伴。同时,任何合作伙伴都不应该丢失任何通知。
谢谢。
答案 0 :(得分:1)
可能的方法:
注意:公共组件应仅标记已发布的邮件(如果已成功传递)。您可能希望等待来自合作伙伴组件的确认。 由于您无法在此过程中保证事务性atomicy,因此您的合作伙伴客户端需要具有针对重复项的强大功能。 您的服务器软件以及每个客户端应管理每个事件的消息ID(UUID):
您的工作是关心为每个事件消息生成唯一ID
您的合作伙伴的工作是维护一个查找表,以检查他们是否已经处理了具有特定ID的evenet。