Package ru.bitel.bgbilling.kernel.event
Class EventProcessor
java.lang.Object
ru.bitel.bgbilling.kernel.event.EventProcessor
public class EventProcessor
extends java.lang.Object
Обработчик (и отсылщик) событий.
Текущая проверенная пропускная способность для запроса-ответа на 4ядерном -
около 1000 в секунду для xml сериализации, примерно в полтора раза больше для обычной сериализации.
Но xml предпочтительнее для интеграции с внешними системами. При простом оповещении о событии (topic) - еще в два раза больше.
Текущая проверенная пропускная способность для запроса-ответа на 4ядерном -
около 1000 в секунду для xml сериализации, примерно в полтора раза больше для обычной сериализации.
Но xml предпочтительнее для интеграции с внешними системами. При простом оповещении о событии (topic) - еще в два раза больше.
-
Field Summary
Fields Modifier and Type Field Description booleansyncAcknowledgeFix -
Method Summary
Modifier and Type Method Description <E extends ru.bitel.bgbilling.kernel.event.common.Event>
voidaddListener(EventListener<? super E> l, java.lang.Class<E> clazz)<E extends ru.bitel.bgbilling.kernel.event.common.Event>
voidaddListener(EventListener<? super E> l, java.lang.Class<E> clazz, int moduleId, int pluginId, java.lang.String query)Добавление слушателя события с параметрами фильтра.<E extends ru.bitel.bgbilling.kernel.event.common.Event>
voidaddListener(EventListener<? super E> l, java.lang.Class<E> clazz, int moduleId, java.lang.String query)<E extends ru.bitel.bgbilling.kernel.event.common.Event>
voidaddListener(EventListener<? super E> l, java.lang.Class<E> clazz, java.lang.String query)java.util.Map<java.lang.String,java.lang.Object>doCrossComponentQuery(java.lang.String componentName, int componentId, java.lang.String componentOperation, java.lang.Object... params)static EventProcessorgetInstance()Получение instance процессора.static <E extends ru.bitel.bgbilling.kernel.event.common.Event>
java.lang.StringgetKey(java.lang.Class<E> clazz, int moduleId, int pluginId, java.lang.String query)java.util.List<EventKey>getListeningEventKeys()Возвращает список событий, которые слушаются.java.util.List<java.lang.Class<? extends ru.bitel.bgbilling.kernel.event.common.Event>>getListeningEvents()Возвращает список событий, которые слушаются.java.util.List<java.lang.Class<? extends ru.bitel.bgbilling.kernel.event.common.Event>>getListeningQueueEvents()<E extends ru.bitel.bgbilling.kernel.event.common.PoolEvent>
PoolEventPublisher<E>newPoolEventPublisher(java.lang.Class<E> clazz, int moduleId)Создание отправщикаPoolEvent.<E extends ru.bitel.bgbilling.kernel.event.common.PoolEvent>
PoolEventPublisher<E>newPoolEventPublisher(java.lang.Class<E> clazz, int moduleId, int capacity, long delay)Создание отправщикаPoolEvent.<E extends ru.bitel.bgbilling.kernel.event.common.PoolQueueEvent>
PoolEventPublisher<E>newPoolQueueEventPublisher(java.lang.Class<E> clazz, int moduleId)Создание отправщикаPoolEvent.<E extends ru.bitel.bgbilling.kernel.event.common.PoolQueueEvent>
PoolEventPublisher<E>newPoolQueueEventPublisher(java.lang.Class<E> clazz, int moduleId, int capacity, long delay)Создание отправщикаPoolEvent.voidpublish(ru.bitel.bgbilling.kernel.event.common.Event event)voidpublishAfterCommit(ru.bitel.bgbilling.kernel.event.common.Event e)voidpublishAfterCommit(ru.bitel.common.worker.CommitableHandler context, ru.bitel.bgbilling.kernel.event.common.Event e)voidremoveListener(EventListener<?> l)<E extends ru.bitel.bgbilling.kernel.event.common.Event>
voidremoveListener(EventListener<?> l, java.lang.Class<E> clazz, int moduleId, java.lang.String query)voidremoveListener(EventListener<?> l, java.util.Collection<java.lang.String> exceptKeys)<Q extends ru.bitel.bgbilling.kernel.event.common.QueueEvent>
Qrequest(Q e)Отправка события и ожидание ответа на него.<Q extends ru.bitel.bgbilling.kernel.event.common.Event>
Qrequest(Q e, long timeout)Отправка события и ожидание ответа на него.<Q extends ru.bitel.bgbilling.kernel.event.common.Event>
java.util.concurrent.Future<Q>requestAsync(Q e, long timeout)Выполнение запроса асинхронно.
Если ответ не пришел, обязательно должен быть обязательно вызванFuture.cancel(boolean)!!!voidsetThreadCount(int count, int queue)Установка количества потоков обработки сообщений.
Sessionработает в одном потоке.voidshutdown()Останов и ожидание окончания выполнения уже полученных событий.<E extends ru.bitel.bgbilling.kernel.event.common.Event>
booleanupdateListener(EventListener<? super E> l, java.lang.Class<E> clazz)<E extends ru.bitel.bgbilling.kernel.event.common.Event>
booleanupdateListener(EventListener<? super E> l, java.lang.Class<E> clazz, int moduleId, int pluginId, java.lang.String query)<E extends ru.bitel.bgbilling.kernel.event.common.Event>
booleanupdateListener(EventListener<? super E> l, java.lang.Class<E> clazz, int moduleId, java.lang.String query)<E extends ru.bitel.bgbilling.kernel.event.common.Event>
booleanupdateListener(EventListener<? super E> l, java.lang.Class<E> clazz, java.lang.String query)Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Field Details
-
syncAcknowledgeFix
public final boolean syncAcknowledgeFix
-
-
Method Details
-
setThreadCount
public final void setThreadCount(int count, int queue)Установка количества потоков обработки сообщений.
Sessionработает в одном потоке. А этого параметра будет зависеть в пуле из скольки потоков
будет обрабатываться сообщение. Если count <=0 сообщение обрабатывается в том же потоке.- Parameters:
count-
-
addListener
public <E extends ru.bitel.bgbilling.kernel.event.common.Event> void addListener(EventListener<? super E> l, java.lang.Class<E> clazz) throws ru.bitel.bgbilling.common.BGException- Throws:
ru.bitel.bgbilling.common.BGException
-
addListener
public <E extends ru.bitel.bgbilling.kernel.event.common.Event> void addListener(EventListener<? super E> l, java.lang.Class<E> clazz, java.lang.String query) throws ru.bitel.bgbilling.common.BGException- Throws:
ru.bitel.bgbilling.common.BGException
-
addListener
public <E extends ru.bitel.bgbilling.kernel.event.common.Event> void addListener(EventListener<? super E> l, java.lang.Class<E> clazz, int moduleId, java.lang.String query) throws ru.bitel.bgbilling.common.BGException- Throws:
ru.bitel.bgbilling.common.BGException
-
addListener
public <E extends ru.bitel.bgbilling.kernel.event.common.Event> void addListener(EventListener<? super E> l, java.lang.Class<E> clazz, int moduleId, int pluginId, java.lang.String query) throws ru.bitel.bgbilling.common.BGExceptionДобавление слушателя события с параметрами фильтра.- Type Parameters:
E-- Parameters:
l-clazz-moduleId- фильтр по коду модуля (-1 - не важно, 0 - ядро)pluginId- фильтр по коду плагина (-1 - не важно)query- фильтр по параметрам сообщения события.
Параметры сообщения устанавливаются событием вEvent.prepareMessage(ObjectMessage)- Throws:
ru.bitel.bgbilling.common.BGException- See Also:
Message
-
updateListener
public <E extends ru.bitel.bgbilling.kernel.event.common.Event> boolean updateListener(EventListener<? super E> l, java.lang.Class<E> clazz, int moduleId, int pluginId, java.lang.String query) throws ru.bitel.bgbilling.common.BGException- Throws:
ru.bitel.bgbilling.common.BGException
-
updateListener
public <E extends ru.bitel.bgbilling.kernel.event.common.Event> boolean updateListener(EventListener<? super E> l, java.lang.Class<E> clazz) throws ru.bitel.bgbilling.common.BGException- Throws:
ru.bitel.bgbilling.common.BGException
-
updateListener
public <E extends ru.bitel.bgbilling.kernel.event.common.Event> boolean updateListener(EventListener<? super E> l, java.lang.Class<E> clazz, java.lang.String query) throws ru.bitel.bgbilling.common.BGException- Throws:
ru.bitel.bgbilling.common.BGException
-
updateListener
public <E extends ru.bitel.bgbilling.kernel.event.common.Event> boolean updateListener(EventListener<? super E> l, java.lang.Class<E> clazz, int moduleId, java.lang.String query) throws ru.bitel.bgbilling.common.BGException- Throws:
ru.bitel.bgbilling.common.BGException
-
getKey
public static <E extends ru.bitel.bgbilling.kernel.event.common.Event> java.lang.String getKey(java.lang.Class<E> clazz, int moduleId, int pluginId, java.lang.String query) -
removeListener
- Throws:
ru.bitel.bgbilling.common.BGException
-
removeListener
public <E extends ru.bitel.bgbilling.kernel.event.common.Event> void removeListener(EventListener<?> l, java.lang.Class<E> clazz, int moduleId, java.lang.String query) throws ru.bitel.bgbilling.common.BGException- Throws:
ru.bitel.bgbilling.common.BGException
-
removeListener
public void removeListener(EventListener<?> l, java.util.Collection<java.lang.String> exceptKeys) throws ru.bitel.bgbilling.common.BGException- Throws:
ru.bitel.bgbilling.common.BGException
-
publishAfterCommit
public final void publishAfterCommit(ru.bitel.common.worker.CommitableHandler context, ru.bitel.bgbilling.kernel.event.common.Event e) -
publishAfterCommit
public final void publishAfterCommit(ru.bitel.bgbilling.kernel.event.common.Event e) -
publish
public final void publish(ru.bitel.bgbilling.kernel.event.common.Event event) throws ru.bitel.bgbilling.common.BGException- Throws:
ru.bitel.bgbilling.common.BGException
-
request
public final <Q extends ru.bitel.bgbilling.kernel.event.common.QueueEvent> Q request(Q e) throws ru.bitel.bgbilling.common.BGExceptionОтправка события и ожидание ответа на него. Ответ - это (возможно) измененный объект e Но в тоже время он мог быть передан по сети туда и обратно, потому result != e- Throws:
ru.bitel.bgbilling.common.BGException
-
request
public final <Q extends ru.bitel.bgbilling.kernel.event.common.Event> Q request(Q e, long timeout) throws EventProcessorExceptionОтправка события и ожидание ответа на него. Ответ - это (возможно) измененный объект e Но в тоже время он был передан по сети туда и обратно, потому result != e
Если задан таймаут, то необходимо на повторное событие с теми же параметрами - отвечать одинаково,
так как событие на самом деле может все равно обработаться, но таймаут выйти и ответ не придет.- Throws:
EventProcessorException
-
requestAsync
public <Q extends ru.bitel.bgbilling.kernel.event.common.Event> java.util.concurrent.Future<Q> requestAsync(Q e, long timeout) throws EventProcessorExceptionВыполнение запроса асинхронно.
Если ответ не пришел, обязательно должен быть обязательно вызванFuture.cancel(boolean)!!!- Type Parameters:
Q-- Parameters:
e-timeout-- Returns:
- Throws:
EventProcessorException
-
getListeningEvents
public java.util.List<java.lang.Class<? extends ru.bitel.bgbilling.kernel.event.common.Event>> getListeningEvents()Возвращает список событий, которые слушаются.- Returns:
-
getListeningQueueEvents
public java.util.List<java.lang.Class<? extends ru.bitel.bgbilling.kernel.event.common.Event>> getListeningQueueEvents() -
getListeningEventKeys
Возвращает список событий, которые слушаются.- Returns:
-
getInstance
Получение instance процессора. Процессор инициализируется при первом использовании.- Returns:
-
newPoolEventPublisher
public <E extends ru.bitel.bgbilling.kernel.event.common.PoolEvent> PoolEventPublisher<E> newPoolEventPublisher(java.lang.Class<E> clazz, int moduleId)Создание отправщикаPoolEvent.- Type Parameters:
E-- Parameters:
clazz-moduleId- код модуля, с которым будут все отправленные события.- Returns:
- See Also:
PoolEvent
-
newPoolEventPublisher
public <E extends ru.bitel.bgbilling.kernel.event.common.PoolEvent> PoolEventPublisher<E> newPoolEventPublisher(java.lang.Class<E> clazz, int moduleId, int capacity, long delay)Создание отправщикаPoolEvent.- Type Parameters:
E-- Parameters:
clazz-moduleId- код модуля, с которым будут все отправленные событияcapacity- максимальный размер буфера сообщенийdelay- частота отправки буфера, в миллисекундах- Returns:
-
newPoolQueueEventPublisher
public <E extends ru.bitel.bgbilling.kernel.event.common.PoolQueueEvent> PoolEventPublisher<E> newPoolQueueEventPublisher(java.lang.Class<E> clazz, int moduleId)Создание отправщикаPoolEvent.- Type Parameters:
E-- Parameters:
clazz-moduleId- код модуля, с которым будут все отправленные события.- Returns:
- See Also:
PoolEvent
-
newPoolQueueEventPublisher
public <E extends ru.bitel.bgbilling.kernel.event.common.PoolQueueEvent> PoolEventPublisher<E> newPoolQueueEventPublisher(java.lang.Class<E> clazz, int moduleId, int capacity, long delay)Создание отправщикаPoolEvent.- Type Parameters:
E-- Parameters:
clazz-moduleId- код модуля, с которым будут все отправленные событияcapacity- максимальный размер буфера сообщенийdelay- частота отправки буфера, в миллисекундах- Returns:
-
shutdown
public void shutdown() throws javax.jms.JMSException, java.lang.InterruptedExceptionОстанов и ожидание окончания выполнения уже полученных событий.- Throws:
javax.jms.JMSExceptionjava.lang.InterruptedException
-
doCrossComponentQuery
public java.util.Map<java.lang.String,java.lang.Object> doCrossComponentQuery(java.lang.String componentName, int componentId, java.lang.String componentOperation, java.lang.Object... params) throws ru.bitel.bgbilling.common.BGException- Parameters:
componentName-componentId-componentOperation-params-- Returns:
- Throws:
ru.bitel.bgbilling.common.BGException
-