Package ru.bitel.bgbilling.kernel.event

# Class EventWorker

java.lang.Object
ru.bitel.bgbilling.kernel.base.server.logger.BGLogger
ru.bitel.common.worker.WorkerTask<EventListenerContext>
ru.bitel.bgbilling.kernel.event.EventWorker

All Implemented Interfaces:
  `Runnable`, `EventListener<ru.bitel.bgbilling.kernel.event.common.Event>`

Direct Known Subclasses:
  `AsyncEventWorker`, `TvAccountStateAndOptionsDatabaseWorker`

public abstract class EventWorker extends ru.bitel.common.worker.WorkerTask<EventListenerContext> implements EventListener<ru.bitel.bgbilling.kernel.event.common.Event>
Обработчик событий. Выбирает события из MessageConsumer и задает методы для обработки этих событий(реализуются в потомках)

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from class ru.bitel.common.worker.WorkerTask

  `ru.bitel.common.worker.WorkerTask.BlockingExecutionHandler`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected long`
  `batchWait`
  Сколько ждать следующего задания/события, прежде чем прекратить цикл (прекратить `doTasks()`), в мс.
  `protected ru.bitel.bgbilling.kernel.event.AbstractConsumer`
  `consumer`
  `protected long`
  `errorPause`
  Длительность паузы после возникновения ошибки, в мс.
  `protected final int`
  `moduleId`
  `protected boolean`
  `working`

  ### Fields inherited from class ru.bitel.common.worker.WorkerTask

  `context`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `EventWorker(int moduleId)`
  ``
  `EventWorker(EventProcessor ep, Class<? extends ru.bitel.bgbilling.kernel.event.common.Event> clazz, int moduleId, int pluginId, String query)`
  ``
  `EventWorker(EventProcessor ep, String destination, int moduleId, int pluginId, String query, boolean autoAcknowledge, Class<?>... clazz)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `abstract Object`
  `doTask(Object task)`
  Выполнение одной задачи (события).
  `boolean`
  `doTasks()`
  Выполнение задач (одной или нескольких, с ожиданием новых в течении `batchWait`), нужно вызывать из `runWorker()`.
  `protected boolean`
  `internalDoTask(Object task)`
  `protected int`
  `internalRunWorker(long timeout, boolean wait)`
  `void`
  `notify(ru.bitel.bgbilling.kernel.event.common.Event e, EventListenerContext ctx)`
  `protected Object`
  `poll(long timeout)`
  `protected Object`
  `pollFirstTask()`
  `protected void`
  `runImpl()`
  `protected abstract boolean`
  `runWorker()`
  Вызывается, когда появляются задачи.
  `void`
  `setConsumer(Class<? extends ru.bitel.bgbilling.kernel.event.common.Event> clazz, String query)`
  `void`
  `shutdown()`

  ### Methods inherited from class ru.bitel.common.worker.WorkerTask

  `newBlockingFixedThreadPool, newFixedThreadPool, newFixedThreadPool, newScheduledThreadPool, run, runSync, runSync, setContext`

  ### Methods inherited from class ru.bitel.bgbilling.kernel.base.server.logger.BGLogger

  `error, error, error, getLogger, logError, logError, warn`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### consumer

    protected ru.bitel.bgbilling.kernel.event.AbstractConsumer consumer

  - ### batchWait

    protected long batchWait
    Сколько ждать следующего задания/события, прежде чем прекратить цикл (прекратить `doTasks()`), в мс.

  - ### errorPause

    protected long errorPause
    Длительность паузы после возникновения ошибки, в мс.

  - ### working

    protected volatile boolean working

  - ### moduleId

    protected final int moduleId

- ## Constructor Details

  - ### EventWorker

    protected EventWorker(int moduleId) throws ru.bitel.bgbilling.common.BGException
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### EventWorker

    public EventWorker(EventProcessor ep, Class<? extends ru.bitel.bgbilling.kernel.event.common.Event> clazz, int moduleId, int pluginId, String query) throws ru.bitel.bgbilling.common.BGException
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### EventWorker

    public EventWorker(EventProcessor ep, String destination, int moduleId, int pluginId, String query, boolean autoAcknowledge, Class<?>... clazz) throws ru.bitel.bgbilling.common.BGException
    Throws:
      `ru.bitel.bgbilling.common.BGException`

- ## Method Details

  - ### setConsumer

    public void setConsumer(Class<? extends ru.bitel.bgbilling.kernel.event.common.Event> clazz, String query) throws ru.bitel.bgbilling.common.BGException
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### runImpl

    protected void runImpl() throws Exception
    Specified by:
      `runImpl` in class `ru.bitel.common.worker.WorkerTask<EventListenerContext>`
    Throws:
      `Exception`

  - ### internalRunWorker

    protected int internalRunWorker(long timeout, boolean wait)
    Parameters:
      `timeout` -
      `wait` -
    Returns:
      -1, если произошла ошибка; 0, если ничего не было сделано, 1, если нормально выполнено одно или более заданий.

  - ### pollFirstTask

    protected Object pollFirstTask()

  - ### poll

    protected Object poll(long timeout) throws ru.bitel.bgbilling.common.BGException
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### doTasks

    public boolean doTasks() throws ru.bitel.bgbilling.common.BGException
    Выполнение задач (одной или нескольких, с ожиданием новых в течении `batchWait`), нужно вызывать из `runWorker()`.
    Returns:
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### internalDoTask

    protected boolean internalDoTask(Object task) throws javax.jms.JMSException, jakarta.xml.bind.JAXBException, ru.bitel.bgbilling.common.BGException
    Throws:
      `javax.jms.JMSException`
      `jakarta.xml.bind.JAXBException`
      `ru.bitel.bgbilling.common.BGException`

  - ### runWorker

    protected abstract boolean runWorker() throws ru.bitel.bgbilling.common.BGException
    Вызывается, когда появляются задачи. Внутри данного метода нужно вызвать `doTasks()`, который выполняет последовательно появившиеся задачи. А перед и после вызова `doTasks()` можно инициализировать и освободить DAO.
    Returns:
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### notify

    public void notify(ru.bitel.bgbilling.kernel.event.common.Event e, EventListenerContext ctx) throws ru.bitel.bgbilling.common.BGException
    Specified by:
      `notify` in interface `EventListener<ru.bitel.bgbilling.kernel.event.common.Event>`
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### doTask

    public abstract Object doTask(Object task) throws ru.bitel.bgbilling.common.BGException
    Выполнение одной задачи (события).
    Parameters:
      `task` -
    Returns:
      обычно null.
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### shutdown

    public void shutdown() throws ru.bitel.bgbilling.common.BGException
    Throws:
      `ru.bitel.bgbilling.common.BGException`