【问题标题】:osgi-karaf-multiple versions of service and camel routeosgi-karaf-多个版本的服务和骆驼路线
【发布时间】:2014-04-08 13:23:41
【问题描述】:

OSGi 的一个好处是版本控制explained here。根据文档,OSGi 可以托管不同版本的“相同 jar”,并让其他应用程序相应地访问它们。

我的任务是使用 Camel 路由来利用 OSGi 的相同属性(我正在使用 Apache-Karaf 容器)。

我必须部署一个服务的多个版本,并让Camel路由到正确的基于根据要求。我广泛搜索了谷歌,但我没有找到合适的例子:(

请给我任何指示或指导我举一个例子。

更新

service 是指osgi bundle 服务,它是这样定义的

  <osgi:service ref="transformService">
        <osgi:interfaces>
            <value>demo.service.TransformService</value>
        </osgi:interfaces>
  </osgi:service>

我按照this tutorial 中提供的步骤创建了一个名为transformService 的服务,TransformServiceImpl 是该服务的实现类。

现在假设我将修改TransformServiceImpl 并将其作为新版本发布(通过在pom.xml 中更新我的版本)。另外,我将在 Karaf 中安装这两个版本,即demo.service-0.1.jardemo.service-0.2.jar(Karaf 可以)。在这种情况下,如何路由到特定版本的服务?

我可以创建 2 个osgi:reference 指向相同的服务但​​不同的版本吗?像这样?

 <osgi:reference id="myTransformV0.1" version="0.1" interface="demo.service.TransformService"/>
 <osgi:reference id="myTransformV0.2" version="0.2" interface="demo.service.TransformService"/> 

并在路线中使用它们?

 <camelContext xmlns="http://camel.apache.org/schema/spring">
    <route>
      <from uri="timer://myTimer?fixedRate=true&amp;period=10000"/>
         <choice>
                <when ...> <bean ref="myTransformV0.1" method="transform"/>
                <otherwise> <bean ref="myTransformV0.2" method="transform"/>
         </choice>
      <to uri="log:ExampleRouter"/>
    </route>
  </camelContext>

【问题讨论】:

  • 你可以在中间放置一个队列,然后将你的消息推送到队列中,并在上面有一个属性,说明你需要处理它的版本吗?然后你可以为每个版本创建一个订阅者,对每条消息应用过滤器,以便他们只处理他们版本的消息?我不确定您是在 Fuse 中运行还是容易获得 A-MQ

标签: java osgi apache-camel apache-karaf blueprint-osgi


【解决方案1】:

OSGi 版本控制不同于服务版本控制。我认为关键问题是如何访问这些不同版本的骆驼路线。

如果你的骆驼路由提供 RESTful 服务,可以很容易地通过使用不同的 url 来提供不同的版本,例如“/service/v1”、“/service/v2”。但这与 OSGi 版本控制不同,您仍然需要做一些工作来填补空白。

【讨论】:

  • 感谢@WillemJiang 的回复。我所说的服务是 osgi bundle 服务。我已经更新了这个问题。希望现在很清楚。
  • 我不确定 osgi:reference 是否支持版本,但如果你使用蓝图,你可以定义一个过滤器来指定服务可以公开的版本。
  • 再次感谢 :) .. osgi:reference 不支持版本,我只是为了提问。我将探索蓝图..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-05
  • 2015-06-12
  • 2018-09-05
  • 2020-01-11
  • 2020-03-23
相关资源
最近更新 更多