La munca folosim RabbitMQ. Avem pe o coada cam tot timpul in jur de 250 de mesaje care stau acolo si sunt nack. Numarul acetsor mesaje mai scade, dar tot ajunge pana la 250.
Aplicatia care ar trebui sa le consume este in Java si foloseste Spring AMQP
Exista o posibilitate sa fie consumate. sterse ack etc?
Am dat unbind la coda, purge si nu a mers nimic
Asta din interfata web
Si mai sunt curios ce ar putea provoca acest nack la mesaje. O exceptie prin aplicatie, eroare etc
Ai dat multe detalii, asa ca o sa dau cu presupusul
Consumer e overloaded, probabil cand trage mesajul, face un clojure ceva care dureaza mai mult decat timeout default de ack, caz in care Rabbit face re-queue
Bad code. Poate pui un obiect serializat pe queue, iar cand il tragi, la de serializare crapa, caz in care nu se face ack si este re-queued
Problema cel mai probabil nu e cu Rabbit. Pune loguri in consumer sa vezi unde crapa, poate e asa cum s-a mai mentionat, deserializarea sau operatiunile ce se fac in consumer dureaza prea mult. Testeaza cu mesaje mai scurte sau testeaza cu ack imediat si fara procesare in consumer.
Am observat ieri un candidat la memory leak. Astfek CPU usage creste mult si nu se mai consuma mesajele din coada la rata optima.
Am facut cateva heap dump-uri ca sa le analizez si sa imi dau seama cum a aparut. A fost introdus intr-un build, ca pana sa fac upgrade la o noua versiune nu era prezent.
Fun times
Plus ca am mai vazut ceva exceptii si poate le infig un try/catch.