Package ru.bitel.bgbilling.kernel.event

# Class EventWorker

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

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

Direct Known Subclasses:
  `AsyncEventWorker`

    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 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, java.lang.Class<? extends ru.bitel.bgbilling.kernel.event.common.Event> clazz, int moduleId, int pluginId, java.lang.String query)` |
  `` | `EventWorker​(EventProcessor ep, java.lang.String destination, int moduleId, int pluginId, java.lang.String query, boolean autoAcknowledge, java.lang.Class<?>... clazz)` |

- ## Method Summary

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

  - ### EventWorker

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

- ## Method Details

  - ### setConsumer

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

  - ### runImpl

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

  - ### internalRunWorker

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

  - ### pollFirstTask

    protected java.lang.Object pollFirstTask()

  - ### poll

    protected java.lang.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​(java.lang.Object task) throws javax.jms.JMSException, javax.xml.bind.JAXBException, ru.bitel.bgbilling.common.BGException
    Throws:
      `javax.jms.JMSException`
      `javax.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 java.lang.Object doTask​(java.lang.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`