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 boolean
syncAcknowledgeFix
-
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 EventProcessor
getInstance()
Получение 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
.void
publish(ru.bitel.bgbilling.kernel.event.common.Event event)
void
publishAfterCommit(ru.bitel.bgbilling.kernel.event.common.Event e)
void
publishAfterCommit(ru.bitel.common.worker.CommitableHandler context, ru.bitel.bgbilling.kernel.event.common.Event e)
void
removeListener(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)
void
removeListener(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)
!!!void
setThreadCount(int count, int queue)
Установка количества потоков обработки сообщений.
Session
работает в одном потоке.void
shutdown()
Останов и ожидание окончания выполнения уже полученных событий.<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.JMSException
java.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
-