• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/core/queue/consumer/grouphash.php
  • Класс: BitrixCalendarCoreQueueConsumerGroupHash
  • Вызов: GroupHash::receive
public function receive(): ?InterfacesMessage
{
	$row = QueueHandledMessageTable::query()
		->addGroup('HASH')
		->setLimit(1)
		->registerRuntimeField('MAX_ID', [
			'data_type' => 'string',
			'expression' => ['MAX(%s)', 'ID']
		])
		->setSelect(['MAX_ID', 'HASH'])
		->addFilter('QUEUE_ID', $this->getQueue()->getQueueId())
		->exec()->fetch()
	;
	if ($row)
	{
		$handledMessageId = (int)$row['MAX_ID'];
		/** @var HandledMessage $handledMessage */
		$handledMessage = $this->getHandledMessageMapper()->getById($handledMessageId);

		$handledMessage->getMessage()
			->setHeader(self::HANDLED_MESSAGE_HEADER_ID, $handledMessageId)
			->setHeader(self::HANDLED_MESSAGE_HEADER_HASH, $row['HASH'])
		;

		return $handledMessage->getMessage();
	}

	return null;
}