SOA案例
SOA描述了一系列创建松耦合,基于标准,保持业务一致服务的模式和最佳实践,因为在描述 实现和绑定之间实现分离关注,SOA提供了更高层次的灵活性。
这个项目由下面技术组成:
Groovy
Gradle
Springframework
Camel
CXF
该应用的场景是:一个娱乐提供商要分决定奖励他们最忠诚的客户。
需求故事如下:
显示客户可申请的奖金:作为客户,我希望看到根据我的频道订阅得到的奖励。
账户部门需要检查客户基于忠诚和计费状态基础上的资格量化状态。
需要提供一个RewardsService。该服务接受输入客户帐号和订阅的组合渠道。如果客户正确,获奖励RewardsService应该返回一个根据组合的订阅的奖励列表。下表描述了频道订阅和相关的奖励。
![8b4ee6b618db958d5c4f8a66b7a268be.png](https://img.php1.cn/3cd4a/1eebe/cd5/4fae50aeee651818.webp)
客户状态部门正在开发一个 EligibilityService,接受账户号码,检查客户是否合格eligibility,rewardService和EligibilityService交互顺序图:
![2071619ac7cd6f187767605b29236e31.png](https://img.php1.cn/3cd4a/1eebe/cd5/857a46d091981bac.webp)
下面是EligibiityService 的预期输出和rewardService的相应结果:
![3e16b47139aa3223e6fba97d3093286b.png](https://img.php1.cn/3cd4a/1eebe/cd5/ed19db63ee478b98.png)
这个系统中主要是两个服务,rewardService和EligibiityService,rewardService的结果依赖于EligibiityService,他们之间的整合关系如下图:
![45896a38497ea3df7a35651cb4a552e2.png](https://img.php1.cn/3cd4a/1eebe/cd5/ed19db63ee478b98.png)
rewardService通过Apache Cxf作为Restful服务对外对客户端公开,其内部和帐号部门的EligibiityService通过Apache Camel整合。Camel相当于一个消息系统。
该案例涉及以下知识点和配置: