2012-11-16 23 views
6

Bir RabbitMQ kuyruğundan tükenmek üzere EC2'de nokta örnekleri kullanıyorum. Her iş birkaç saniye sürüyor ve manuel 'ack' gerektiriyor.RabbitMQ "Zombi" tüketicileri

Örnek sonlandırıldığında sorunlar ortaya çıkar. AMQP tüketicilerinin temiz bir şekilde kapanması için zaman yok ve bu yüzden hala ölü tüketicilerin varlığını düşünen RabbitMQ sunucusuyla kaldım. İşlerini yeniden sağlamaz ve hala yeni işleri onlara yönlendirir.

RabbitMQ, zombi tüketicilerini otomatik olarak zaman aşımına uğratmak ve bunları işçi havuzundan çıkarmak için nasıl yararlanabilirim?

cevap

5

RabbitMQ bağlantısında Heartbeat özelliğini ayarlamayı öneririm. Kalp atışı durursa, RabbitMQ sonunda bağlantıyı kesecek ve paketlenmemiş mesajları sıraya geri koyacaktır.

1

Sizinle aynı yerde bulundum ve tüketici tarafında bağlantı kalp atışı özelliğini ayarlayarak çözdüm (node_amqp modülünü kullanarak Node.Js). Bağlantı "zombi" tüketici ile birlikte kapalı ve kaldırıldı. İşlenmemiş işler Hazır'a geri döner.