Вот теперь наверное можно :)
moko 16.09 01:13
Для CentOS утром будет в ночных сборках. Главное - добавлена обработка ошибок.
Теперь есть встроенная устойчивость к обрывам связи — раньше любая ошибка (даже локальная, вроде опечатки в параметрах declare) требовала пересоздавать объект руками, а долгоживущий процесс просто умирал при первом же сбое сети. Теперь класс сам различает два вида проблем: лёгкую - закрылся только канал (обычно из-за конкретной неудачной операции, а не разрыва сети) - она чинится автоматически и без настроек; и тяжёлую - реально пропало соединение с брокером - тут восстановление возможно, но только если явно попросить об этом через $.auto_reconnect(N) при создании объекта (N — пауза в секундах между попытками). Без этой опции неисправное соединение будет просто бросать исключение - иногда правильнее упасть, а не заваливать логи бесконечными попытками, например если брокер выключили специально на обслуживание.
Улучшена точность самих сообщений об ошибках: раньше при некоторых сбоях (например, если код случайно подтвердил одно и то же сообщение из очереди дважды) класс не мог толком понять, что случилось, и сообщал что-то невнятное про "неожиданное состояние протокола".
Раньше в хеше сообщения было только msg, delivery_tag, consumer_tag, exchange. Теперь — ещё routing_key, redelivered, и все properties/headers, если отправитель их выставлял
Реализованы headers у publish, ^o.publish[msg;$.queue[q] $.headers[$.x-retry(3) $.x-tag[hello]]]
Опция no_ack переименована в ack.
Было: $.no_ack(true) = не подтверждать вручную.
Стало: $.ack(false) = не подтверждать вручную (ack(true) — значение по умолчанию, ручное подтверждение).
Если где-то уже использовался no_ack, надо поменять на ack с противоположным значением.
Ну и понятно понадобилось тестовое приложение, сделано примерно по вашему описанию, выложено на Github:
https://github.com/artlebedev/parser3-amqp-demo