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