У меня есть простой класс прослушивателя событий 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) Это происходит из-за размера пула потоков, равного 20, в конфигурации OSGI Felix Event Adminили что-то другое? 2) Нужно ли мне увеличивать размер потока, соотношение асинхронного / синхронизированного пула потоков и время ожидания, если да, как я могу определить числа?