Package ru.bitel.bgbilling.kernel.event
Class EventProcessor
java.lang.Object
ru.bitel.bgbilling.kernel.base.server.logger.BGLogger
ru.bitel.bgbilling.kernel.event.EventProcessor
public class EventProcessor
extends ru.bitel.bgbilling.kernel.base.server.logger.BGLogger
Обработчик (и отсылщик) событий.
Текущая проверенная пропускная способность для запроса-ответа на 4ядерном -
около 1000 в секунду для xml сериализации, примерно в полтора раза больше для обычной сериализации.
Но xml предпочтительнее для интеграции с внешними системами. При простом оповещении о событии (topic) - еще в два раза больше.
Текущая проверенная пропускная способность для запроса-ответа на 4ядерном -
около 1000 в секунду для xml сериализации, примерно в полтора раза больше для обычной сериализации.
Но xml предпочтительнее для интеграции с внешними системами. При простом оповещении о событии (topic) - еще в два раза больше.
-
Field Summary
-
Method Summary
Modifier and TypeMethodDescription<E extends ru.bitel.bgbilling.kernel.event.common.Event>
voidaddListener
(EventListener<? super E> l, Class<E> clazz) <E extends ru.bitel.bgbilling.kernel.event.common.Event>
voidaddListener
(EventListener<? super E> l, Class<E> clazz, int moduleId, int pluginId, String query) Добавление слушателя события с параметрами фильтра.<E extends ru.bitel.bgbilling.kernel.event.common.Event>
voidaddListener
(EventListener<? super E> l, Class<E> clazz, int moduleId, String query) <E extends ru.bitel.bgbilling.kernel.event.common.Event>
voidaddListener
(EventListener<? super E> l, Class<E> clazz, String query) doCrossComponentQuery
(String componentName, int componentId, String componentOperation, Object... params) static final EventProcessor
Получение instance процессора.static <E extends ru.bitel.bgbilling.kernel.event.common.Event>
StringВозвращает список событий, которые слушаются.Возвращает список событий, которые слушаются.<E extends ru.bitel.bgbilling.kernel.event.common.PoolEvent>
PoolEventPublisher<E>newPoolEventPublisher
(Class<E> clazz, int moduleId) Создание отправщикаPoolEvent
.<E extends ru.bitel.bgbilling.kernel.event.common.PoolEvent>
PoolEventPublisher<E>newPoolEventPublisher
(Class<E> clazz, int moduleId, int capacity, long delay) Создание отправщикаPoolEvent
.<E extends ru.bitel.bgbilling.kernel.event.common.PoolQueueEvent>
PoolEventPublisher<E>newPoolQueueEventPublisher
(Class<E> clazz, int moduleId) Создание отправщикаPoolEvent
.<E extends ru.bitel.bgbilling.kernel.event.common.PoolQueueEvent>
PoolEventPublisher<E>newPoolQueueEventPublisher
(Class<E> clazz, int moduleId, int capacity, long delay) Создание отправщикаPoolEvent
.final void
publish
(ru.bitel.bgbilling.kernel.event.common.Event event) final void
publishAfterCommit
(ru.bitel.bgbilling.kernel.event.common.Event e) final 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, Class<E> clazz, int moduleId, String query) void
removeListener
(EventListener<?> l, Collection<String> exceptKeys) final <Q extends ru.bitel.bgbilling.kernel.event.common.QueueEvent>
Qrequest
(Q e) Отправка события и ожидание ответа на него.final <Q extends ru.bitel.bgbilling.kernel.event.common.Event>
Qrequest
(Q e, long timeout) Отправка события и ожидание ответа на него.<Q extends ru.bitel.bgbilling.kernel.event.common.Event>
Future<Q>requestAsync
(Q e, long timeout) Выполнение запроса асинхронно.
Если ответ не пришел, обязательно должен быть обязательно вызванFuture.cancel(boolean)
!!!final void
setThreadCount
(int count, int queue) Установка количества потоков обработки сообщений.
Session
работает в одном потоке.void
shutdown()
Останов и ожидание окончания выполнения уже полученных событий.<E extends ru.bitel.bgbilling.kernel.event.common.Event>
booleanupdateListener
(EventListener<? super E> l, Class<E> clazz) <E extends ru.bitel.bgbilling.kernel.event.common.Event>
booleanupdateListener
(EventListener<? super E> l, Class<E> clazz, int moduleId, int pluginId, String query) <E extends ru.bitel.bgbilling.kernel.event.common.Event>
booleanupdateListener
(EventListener<? super E> l, Class<E> clazz, int moduleId, String query) <E extends ru.bitel.bgbilling.kernel.event.common.Event>
booleanupdateListener
(EventListener<? super E> l, Class<E> clazz, String query) Methods inherited from class ru.bitel.bgbilling.kernel.base.server.logger.BGLogger
getLogger, logError
-
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, 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, Class<E> clazz, 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, Class<E> clazz, int moduleId, 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, Class<E> clazz, int moduleId, int pluginId, 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, Class<E> clazz, int moduleId, int pluginId, 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, 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, Class<E> clazz, 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, Class<E> clazz, int moduleId, String query) throws ru.bitel.bgbilling.common.BGException - Throws:
ru.bitel.bgbilling.common.BGException
-
getKey
-
removeListener
- Throws:
ru.bitel.bgbilling.common.BGException
-
removeListener
public <E extends ru.bitel.bgbilling.kernel.event.common.Event> void removeListener(EventListener<?> l, Class<E> clazz, int moduleId, String query) throws ru.bitel.bgbilling.common.BGException - Throws:
ru.bitel.bgbilling.common.BGException
-
removeListener
public void removeListener(EventListener<?> l, Collection<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> Future<Q> requestAsync(Q e, long timeout) throws EventProcessorException Выполнение запроса асинхронно.
Если ответ не пришел, обязательно должен быть обязательно вызванFuture.cancel(boolean)
!!!- Type Parameters:
Q
-- Parameters:
e
-timeout
-- Returns:
- Throws:
EventProcessorException
-
getListeningEvents
Возвращает список событий, которые слушаются.- Returns:
-
getListeningQueueEvents
-
getListeningEventKeys
Возвращает список событий, которые слушаются.- Returns:
-
getInstance
Получение instance процессора. Процессор инициализируется при первом использовании.- Returns:
-
newPoolEventPublisher
public <E extends ru.bitel.bgbilling.kernel.event.common.PoolEvent> PoolEventPublisher<E> newPoolEventPublisher(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(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(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(Class<E> clazz, int moduleId, int capacity, long delay) Создание отправщикаPoolEvent
.- Type Parameters:
E
-- Parameters:
clazz
-moduleId
- код модуля, с которым будут все отправленные событияcapacity
- максимальный размер буфера сообщенийdelay
- частота отправки буфера, в миллисекундах- Returns:
-
shutdown
Останов и ожидание окончания выполнения уже полученных событий.- Throws:
javax.jms.JMSException
InterruptedException
-
doCrossComponentQuery
public Map<String,Object> doCrossComponentQuery(String componentName, int componentId, String componentOperation, Object... params) throws ru.bitel.bgbilling.common.BGException - Parameters:
componentName
-componentId
-componentOperation
-params
-- Returns:
- Throws:
ru.bitel.bgbilling.common.BGException
-