【问题标题】:When to use OSGi EventAdmin and when not?何时使用 OSGi EventAdmin,何时不使用?
【发布时间】:2011-10-24 12:41:34
【问题描述】:

我有一个关于 OSGi EventAdmin 服务使用的一般性问题。我目前在每秒可能产生数千个事件的环境中使用它。我担心 EventAdmin 服务可能是一个瓶颈。我从探查器获得的初步结果似乎支持这一点。我的问题是:

  1. 是否有使用 EventAdmin 服务的一般经验法则?
  2. sendEvent 和 postEvent 方法在性能方面有何不同?
  3. 是否存在已知具有低性能 EventAdmin 实现的特定 OSGi 容器?

提前感谢您的支持!

干杯, 乔治

【问题讨论】:

    标签: event-handling osgi


    【解决方案1】:

    你有更多关于你看到的瓶颈的信息吗?

    我们即将更新 Event Admin 规范(请参阅 [1] 中的 RFC 157)以解决一些性能问题。但这还没有完成规范工作。

    Send 事件是同步发送,因此调用线程会阻​​塞,直到通知所有侦听器。大多数实现都使用调用者线程。发布事件不会阻止调用者。它将工作排队等待另一个线程传递事件。当前的事件管理规范要求对异步事件进行排序,因此如果不需要排序,这可能会导致延迟。 RFC 157 提供了不需要这种排序的能力。

    我没有关于一种实施之前是比另一种更好还是更差的数据。

    [1]http://www.osgi.org/Download/File?url=/download/osgi-4.3-early-draft2.pdf

    【讨论】:

    • 我现在已经在 Felix 和 Equinox OSGi 容器中测试了我们的代码。据我所知,Felix 在事件处理方面似乎比 Equinox 更高效。它的内存效率也远高于 Equinox。我想我会暂时坚持使用 Felix。
    猜你喜欢
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 2012-02-14
    • 2010-12-29
    • 2010-10-24
    • 2010-09-28
    • 2013-02-01
    • 2012-03-24
    相关资源
    最近更新 更多