2013-06-05 2 views
0

Использование esper или nesper я могу выдавать события либо из среды выполнения непосредственно следующим образом:Есть ли преимущество использования отправителя пользовательских событий против отправителя выполнения

EPRuntime runtime = provider.getEPRuntime(); 
MyCustomEvent e = new MyCustomEvent("foo"); 
runtime.sendEvent(order); 

или я могу использовать датчик пользовательских событий, как так :

EventSender sender = epService.EPRuntime.GetEventSender("MyCustomEvent"); 
MyCustomEvent e = new MyCustomEvent("foo"); 
sender.SendEvent(e); 

Я пытался это время, и это выглядит как пользовательский отправитель событий может быть быстрее, хотя это на самом деле не кажется, делает большую разницу в производительности от того, что я видел.

Есть ли веская причина выбрать один метод для другого?

Если я иду со вторым способом пользовательского EventSender, безопасно ли кэшировать EventSender Я получаю из среды выполнения, поэтому мне не нужно запрашивать его каждый раз?

ответ

0

Как всегда, отличная esper документации был ответ, который я искал:

С docs они обсуждают преимущества типизированных EventSender так:

Это средство может уменьшить накладные расходы отражение объекта события и поиск типа в качестве отправителя события всегда связаны с одним конкретным типом события.

Для событий, поддерживаемых Java-классом (события JavaBean), отправитель события гарантирует, что объект события равен базовому классу или реализует или расширяет базовый класс для данного типа типа события.

Похоже, что ответ заключается в том, что использование настраиваемого события дает вам безопасность типа и, возможно, некоторое усиление производительности из-за того, что время выполнения не должно прерываться, чтобы определить, какой тип события будет нажат.

Смежные вопросы