何时使用OSGi EventAdmin,何时不使用?

8
我有一个关于使用OSGi EventAdmin服务的一般性问题。我目前在一个场景中使用它,可能每秒会产生数千个事件。我的担忧是EventAdmin服务可能成为瓶颈。我的分析工具得到的初始结果似乎支持这一点。我的问题如下:
  1. 何时使用EventAdmin服务有一般性的经验法则吗?
  2. 在性能方面,sendEvent和postEvent方法有什么区别?
  3. 是否有特定的OSGi容器已知其EventAdmin实现性能较低?
感谢您的支持!
问候, Georg
1个回答

7
你是否有关于你看到的瓶颈更多的信息?
我们即将更新事件管理规范(请参阅[1]中的RFC 157),以帮助解决一些性能问题。但这还不是完成的规范工作。
Send event是同步发送,因此调用线程会阻塞,直到所有侦听器都已被通知。大多数实现使用调用者的线程。Post event不会阻止调用者。它将工作排队,由另一个线程传递事件。当前的Event Admin规范要求异步事件排序,因此如果不需要排序,则可能会导致延迟。RFC 157提供了不需要此排序的能力。
我没有数据表明一个实现比另一个实现好或差。
[1]http://www.osgi.org/Download/File?url=/download/osgi-4.3-early-draft2.pdf

1
我已经在Felix和Equinox OSGi容器中测试了我们的代码。从我的观察来看,Felix在事件处理方面似乎比Equinox更具性能。它也比Equinox更节省内存。我想我暂时会选择Felix。 - BumbleGee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接