Class EventWorker

java.lang.Object
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

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
    Сколько ждать следующего задания/события, прежде чем прекратить цикл (прекратить doTasks()), в мс.
    protected ru.bitel.bgbilling.kernel.event.AbstractConsumer
     
    protected long
    Длительность паузы после возникновения ошибки, в мс.
    protected final int
     
    protected boolean
     

    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
    Выполнение задач (одной или нескольких, с ожиданием новых в течении batchWait), нужно вызывать из runWorker().
    protected boolean
     
    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
     
    protected void
     
    protected abstract boolean
    Вызывается, когда появляются задачи.
    void
    setConsumer(Class<? extends ru.bitel.bgbilling.kernel.event.common.Event> clazz, String query)
     
    void
     

    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, 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, 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 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