Почему мы отправляем идентификатор вместо целого объекта в рабочих? - PullRequest
0 голосов
/ 19 января 2012

В Ruby практикуется отправка идентификатора вместо объекта в рабочих.Разве это не тот процесс, который потребляет процессор, потому что нам нужно снова получить объект из базы данных.

Ответы [ 2 ]

4 голосов
/ 19 января 2012

Несколько причин:

  1. Экономит место в очереди, а также время передачи (приложение => очередь, очередь => рабочие).

  2. Зачастую проще извлечь свежий объект из базы данных (в отличие от извлечения кэшированной копии из очереди)

  3. Аргумент Resque.enqueue должен быть JSON-сериализуемым. Сложные объекты не всегда могут быть сериализованы.

0 голосов
/ 19 января 2012

Если вы подумаете об этом, причины довольно очевидны:

  • ваш объект может меняться в промежутке времени, когда действие ставится в очередь и обрабатывается, и, как правило, вам не нужен устаревший объект.
  • идентификатор, который намного легче транспортировать, чем целый объект, который вам понадобится сериализовать в json / yaml или чем-то еще.
  • если вам нужны ассоциации, проблема только усугубляется:)

Но, в конце концов, это зависит от вашего приложения: если вам нужна только некоторая информация, вы можете просто отправить ее своему работнику напрямую, даже не используя полную модель.

...