为什么不总是调用OSGI事件处理程序

问题描述 投票:1回答:1

我有简单的OSGI事件侦听器类

   @Component(immediate = true)
   @Service(value = { EventHandler.class, JobConsumer.class })
    @Properties(value = {
    @Property(name = JobConsumer.PROPERTY_TOPICS, value = { 
   TestEventHandler.JOB_TOPICS }),
    @Property(name = EventConstants.EVENT_TOPIC, value = { PageEvent.EVENT_TOPIC }) })
 public class TestEventHandler implements EventHandler, JobConsumer {

    @Override
     public void handleEvent(final org.osgi.service.event.Event event) 
     {
      // Create job based on some complex condition
       jobManager.createJob(JOB_TOPICS).properties(properties).add();
          }

   @Override
     public JobResult process(Job job) {
       // Process job based on parameter in handleEvent function
        }
    }

handleEvent事件有时但并非总是被调用。它突然停止监听事件,并且如果我再次在Felix控制台中重新启动该服务,则它将再次开始工作。还有其他自定义OSGI事件侦听器,它们没有这样的问题,只有该侦听器有问题。

你能告诉我吗1)是否由于在Felix Event Admin OSGI配置中将线程池大小设置为20而发生这种情况?2)我是否需要增加线程大小,异步/同步线程池比率和超时,如果可以,如何确定数字?

osgi aem sling
1个回答
2
投票

如果EventHandler花费的时间太长,它将变成黑名单,然后将不再接收任何事件。

© www.soinside.com 2019 - 2024. All rights reserved.