Как получить приоритет текущего задания?

#telnet #beanstalkd

#telnet #beanstalkd

Вопрос:

В beanstalkd

 telnet localhost 11300
USING foo
put 0 100 120 5
hello
INSERTED 1
  

Как я могу узнать, каков приоритет этого задания, когда я его резервирую? И могу ли я освободить его, установив новый приоритет равным текущему приоритету 100?

Ответ №1:

Beanstalkd не возвращает приоритет вместе с данными, но вы могли бы легко добавить его в качестве метаданных в текст вашего собственного сообщения. например, с использованием Json в качестве оболочки сообщения:

 {'priority':100,'timestamp':1302642381,'job':'download http://example.com/'}
  

Следующим зарезервированным сообщением будет следующая доступная запись из выбранных каналов в соответствии с приоритетом и временем — с учетом любой задержки, которую вы запросили при первоначальной отправке сообщения в очередь.

Дополнение: Вы можете получить приоритет задания beanstalk (а также ряд других сведений, например, сколько раз оно ранее резервировалось), но это дополнительный вызов команды stats-job. Вызываемый с помощью JobID, он возвращает около дюжины различных фрагментов информации. Смотрите документ «Протокол» и документы «Ваши библиотеки».

Комментарии:

1. хорошо, но как я могу выпустить задание с меньшим приоритетом, чем текущее? ie. например, self::priority 100??? возможно ли изменить содержимое задания перед его выпуском??

2. Нет. Оно возвращается в порядке приоритета / времени из просматриваемых вами каналов.