>
> Почему-то все стесняются признаться себе и другим в этом, и старательно ищут рациональные доводы. Я вот не стесняюсь. Да, мне хочется нового-клевого. И при том, что рациональные доводы сущесвуют, главная причина все-таки эта :)
А мы вот всегда раз двести подумаем, прежде чем что-то тащить в проект. Потому что зоопарк потом поддерживать и везде есть свои грабельки.
Вопрос состоит в том как лутше работать в Erlang с RabbitMQ? Где создавать connection и channel?Сейчас я деляю что-то такое:Корневый супервизор запускает супервизоры для кажной очереди из которой нужно брать задачи (список очередей береться из конфига и для кажного типа задач своя очередь), эти супервизоры в свою очередь запускают определенное в конфиге количество рабочих процесов которые получают сообщения из своей очереди и делают HTTP запрос к php-скрипту в котором реализована логика.
Сейчас в кажном рабочем процесе я делаю отдельний конект к RabbitMQ, хотя незнаю хорошо ли так делать
Сейчас еще столкнулся с проблемой: если php-скрипт недоступен, то я делаю так чтобы рабочий процес падал, но сообщение которое этот процес обрабатывал остается в RabbitMQ как Unacknowledged, (я так понимаю что из-за того что процес канала остается жить).Как правильно обрабатывать ошибки возникшие в рабочем процесе? Так как если он упадет по любой причине Unacknowledged сообщения просто будут накапливатьсяИ еще мне нужно чтобы в ситуации когда сообщение не может быть обработано php-скриптом оно дожно ждать некоторое время. Сейчас первое что приходит в голову, это не убивать рабочий процес, а сохранять его в state-те и делать попытку повторной обработки через какое-то время
init([Conn, Queue]) ->
process_flag(trap_exit, true),
...
terminate(_Reason, #state{channel=Channel} = State) when is_pid(Channel)->
amqp_channel:close(Channel),
State;
--
--
Страница рассылки: http://groups.google.com/group/erlang-russian
Новости: http://erlanger.ru
Чат: xmpp://erl...@conference.jabber.ru
Чат для оффтопа: xmpp://erlang...@conference.jabber.ru
Правила, действующие в чате и рассылке: http://erlanger.ru/ru/erlang-at-conference-jabber-ru
Написать письмо: erlang-...@googlegroups.com
Отписаться: erlang-russia...@googlegroups.com
---
Вы получили это сообщение, поскольку подписаны на группу Erlang по-русски.
Чтобы отказаться от подписки на эту группу и перестать получать из нее сообщения, отправьте электронное письмо на адрес erlang-russia...@googlegroups.com.
Подробнее о функциях можно узнать на странице https://groups.google.com/groups/opt_out.