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) - еще в два раза больше.

- ## 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> void` | `addListener​(EventListener<? super E> l, java.lang.Class<E> clazz)` |
  `<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)` | Добавление слушателя события с параметрами фильтра.
  `<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)` |
  `<E extends ru.bitel.bgbilling.kernel.event.common.Event> void` | `addListener​(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.String` | `getKey​(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> void` | `removeListener​(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> Q` | `request​(Q e)` | Отправка события и ожидание ответа на него.
  `<Q extends ru.bitel.bgbilling.kernel.event.common.Event> Q` | `request​(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> boolean` | `updateListener​(EventListener<? super E> l, java.lang.Class<E> clazz)` |
  `<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)` |
  `<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)` |
  `<E extends ru.bitel.bgbilling.kernel.event.common.Event> boolean` | `updateListener​(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

    public void removeListener​(EventListener<?> l) throws ru.bitel.bgbilling.common.BGException
    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

    public java.util.List<EventKey> getListeningEventKeys()
    Возвращает список событий, которые слушаются.
    Returns:

  - ### getInstance

    public static final EventProcessor 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`