You are here

class MessageQueueCreator in Open Social 10.1.x

Same name and namespace in other branches
  1. 8.9 modules/custom/activity_logger/src/Plugin/QueueWorker/MessageQueueCreator.php \Drupal\activity_logger\Plugin\QueueWorker\MessageQueueCreator
  2. 8 modules/custom/activity_logger/src/Plugin/QueueWorker/MessageQueueCreator.php \Drupal\activity_logger\Plugin\QueueWorker\MessageQueueCreator
  3. 8.2 modules/custom/activity_logger/src/Plugin/QueueWorker/MessageQueueCreator.php \Drupal\activity_logger\Plugin\QueueWorker\MessageQueueCreator
  4. 8.3 modules/custom/activity_logger/src/Plugin/QueueWorker/MessageQueueCreator.php \Drupal\activity_logger\Plugin\QueueWorker\MessageQueueCreator
  5. 8.4 modules/custom/activity_logger/src/Plugin/QueueWorker/MessageQueueCreator.php \Drupal\activity_logger\Plugin\QueueWorker\MessageQueueCreator
  6. 8.5 modules/custom/activity_logger/src/Plugin/QueueWorker/MessageQueueCreator.php \Drupal\activity_logger\Plugin\QueueWorker\MessageQueueCreator
  7. 8.6 modules/custom/activity_logger/src/Plugin/QueueWorker/MessageQueueCreator.php \Drupal\activity_logger\Plugin\QueueWorker\MessageQueueCreator
  8. 8.7 modules/custom/activity_logger/src/Plugin/QueueWorker/MessageQueueCreator.php \Drupal\activity_logger\Plugin\QueueWorker\MessageQueueCreator
  9. 8.8 modules/custom/activity_logger/src/Plugin/QueueWorker/MessageQueueCreator.php \Drupal\activity_logger\Plugin\QueueWorker\MessageQueueCreator
  10. 10.3.x modules/custom/activity_logger/src/Plugin/QueueWorker/MessageQueueCreator.php \Drupal\activity_logger\Plugin\QueueWorker\MessageQueueCreator
  11. 10.0.x modules/custom/activity_logger/src/Plugin/QueueWorker/MessageQueueCreator.php \Drupal\activity_logger\Plugin\QueueWorker\MessageQueueCreator
  12. 10.2.x modules/custom/activity_logger/src/Plugin/QueueWorker/MessageQueueCreator.php \Drupal\activity_logger\Plugin\QueueWorker\MessageQueueCreator

A report worker.

@QueueWorker( id = "activity_logger_message", title = @Translation("Process activity_logger_message queue."), cron = {"time" = 60} )

This QueueWorker is responsible for creating message items from the queue

Hierarchy

Expanded class hierarchy of MessageQueueCreator

File

modules/custom/activity_logger/src/Plugin/QueueWorker/MessageQueueCreator.php, line 22

Namespace

Drupal\activity_logger\Plugin\QueueWorker
View source
class MessageQueueCreator extends MessageQueueBase implements ContainerFactoryPluginInterface {

  /**
   * The action manager.
   *
   * @var \Drupal\activity_creator\Plugin\ActivityActionManager
   */
  protected $actionManager;

  /**
   * MessageQueueCreator constructor.
   *
   * @param array $configuration
   *   The configuration.
   * @param string $plugin_id
   *   The plugin id.
   * @param array $plugin_definition
   *   The plugin definition.
   * @param \Drupal\Core\Queue\QueueFactory $queue
   *   The queue.
   * @param \Drupal\activity_creator\Plugin\ActivityActionManager $actionManager
   *   The action manager.
   */
  public function __construct(array $configuration, $plugin_id, array $plugin_definition, QueueFactory $queue, ActivityActionManager $actionManager) {
    parent::__construct($configuration, $plugin_id, $plugin_definition, $queue);
    $this->actionManager = $actionManager;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
    return new static($configuration, $plugin_id, $plugin_definition, $container
      ->get('queue'), $container
      ->get('plugin.manager.activity_action.processor'));
  }

  /**
   * {@inheritdoc}
   */
  public function processItem($data) {

    // First make sure it's an actual entity.
    if ($entity = Node::load($data['entity_id'])) {

      // Check if it's created more than 20 seconds ago.
      $timestamp = $entity
        ->getCreatedTime();

      // Current time.
      $now = time();
      $diff = abs($now - $timestamp);

      // Items must be at least 5 seconds old.
      if ($diff <= 5 && $now > $timestamp) {

        // Wait for 100 milliseconds.
        // We don't want to flood the DB with unprocessable queue items.
        usleep(100000);
        $this
          ->createQueueItem('activity_logger_message', $data);
      }
      else {

        // Trigger the create action for enttites.
        $create_action = $this->actionManager
          ->createInstance('create_entitiy_action');
        $create_action
          ->createMessage($entity);
      }
    }
  }

}

Members

Namesort descending Modifiers Type Description Overrides
MessageQueueBase::$queue protected property The queue.
MessageQueueBase::createQueueItem protected function Simple reporter log and display information about the queue.
MessageQueueCreator::$actionManager protected property The action manager.
MessageQueueCreator::create public static function Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface::create
MessageQueueCreator::processItem public function Works on a single queue item. Overrides QueueWorkerInterface::processItem
MessageQueueCreator::__construct public function MessageQueueCreator constructor. Overrides MessageQueueBase::__construct
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 2
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.