- Модуль: 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;
}