1

场景:我将尝试与 EIP 书中的贷款经纪人示例进行类比

  1. 客户发送报价请求
  2. (贷款经纪人向征信机构索取客户信用评分)
  3. 贷款经纪人向每家银行发送报价请求。

问题

  • 在我的情况下,第 1 点和第 2 点在同一个骆驼上下文中(或 osgi 包)
  • 每家银行都有一个单独的捆绑包,通过 NMR 将端点暴露给贷款经纪人捆绑包
  • 贷款经纪人捆绑事先不了解银行,因为我们不时与新银行合作

我做了什么

  • 在loan-broker-bundle 中创建了一个注册类和一个bankDescriptor 接口
  • 每个银行捆绑包在启动时都会调用 registery 以添加其 bankDescriptor (spring init),它告诉贷款经纪人调用哪个端点来获取报价。
  • 贷款经纪人捆绑主路由使用收件人列表(处理器通过询问注册表设置目标端点)来路由报价请求

问题

希望我的描述足够清楚,您可以看到这是一个非常简单的实现。它的极限是什么?我怎样才能把这个注册表变成一个 osgi 服务?

4

2 回答 2

4

我为客户开发了一个基于 SpringDM 的解决方案。在http://www.jakubkorab.net/2012/05/system-integrations-as-plugins-using-camel-and-servicemix.html上有完整的关于如何做到这一点的文章,完整的源代码在https: //github.com/FuseByExample/smx-application-plugins

希望有帮助。

于 2012-06-29T15:51:29.083 回答
2

在 OSGi 中有一个很棒的注册表供您使用:OSGi 服务注册表。所以我的建议是稍微不同地做这件事。为报价请求定义服务接口并将其存储在 api 包中。然后让每个银行实现这个接口,并将实现发布为 OSGi 服务。

然后,贷款经纪人包可以列出 OSGi 服务注册表中的所有 OSGi 服务并调用每个服务以获取报价。在蓝图中有一个不错的标签,您可以使用它来将列表注入到 List 的 bean 属性中。Spring DM 可能有类似的东西。

Camel 目前没有办法调用一个类型的所有 OSGi 服务。我们讨论了一个能够做到这一点的新 osgi 服务组件。所以可能我们很快就会有一个解决方案。

于 2012-06-29T14:53:19.017 回答