CallbackInvoker.php 751 B

12345678910111213141516171819202122232425262728293031
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\MessageQueue;
  7. /**
  8. * Class CallbackInvoker to invoke callbacks for consumer classes
  9. */
  10. class CallbackInvoker
  11. {
  12. /**
  13. * Run short running process
  14. *
  15. * @param QueueInterface $queue
  16. * @param int $maxNumberOfMessages
  17. * @param \Closure $callback
  18. * @return void
  19. */
  20. public function invoke(QueueInterface $queue, $maxNumberOfMessages, $callback)
  21. {
  22. for ($i = $maxNumberOfMessages; $i > 0; $i--) {
  23. do {
  24. $message = $queue->dequeue();
  25. } while ($message === null && (sleep(1) === 0));
  26. $callback($message);
  27. }
  28. }
  29. }