Package ru.bitel.bgbilling.kernel.event
Class EventProcessor
java.lang.Object
ru.bitel.bgbilling.kernel.event.EventProcessor
Обработчик (и отсылщик) событий.
Текущая проверенная пропускная способность для запроса-ответа на 4ядерном -
около 1000 в секунду для xml сериализации, примерно в полтора раза больше для обычной сериализации.
Но xml предпочтительнее для интеграции с внешними системами. При простом оповещении о событии (topic) - еще в два раза больше.
Текущая проверенная пропускная способность для запроса-ответа на 4ядерном -
около 1000 в секунду для xml сериализации, примерно в полтора раза больше для обычной сериализации.
Но xml предпочтительнее для интеграции с внешними системами. При простом оповещении о событии (topic) - еще в два раза больше.
-
Field Summary
Fields -
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 voidpublish(ru.bitel.bgbilling.kernel.event.common.Event event) final voidpublishAfterCommit(ru.bitel.bgbilling.kernel.event.common.Event e) final 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, Class<E> clazz, int moduleId, String query) voidremoveListener(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 voidsetThreadCount(int count, int queue) Установка количества потоков обработки сообщений.
Sessionработает в одном потоке.voidshutdown()Останов и ожидание окончания выполнения уже полученных событий.<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)
-
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.JMSExceptionInterruptedException
-
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
-