Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Jobwarteschlange mit Redis unter Verwendung von BLPOP

Wenn Sie BLPOP allein verwenden, um eine Nachricht aus der Warteschlange zu entfernen, und Ihr Nachrichtenkonsument sie nicht verarbeiten kann, muss die Nachricht erneut in die Warteschlange gestellt werden, damit sie nicht zusammen mit dem fehlgeschlagenen Konsumenten für immer verschwindet.

Für eine dauerhaftere Nachrichtenverarbeitung muss eine Liste der verarbeiteten Nachrichten geführt werden, damit sie im Fehlerfall erneut in die Warteschlange gestellt werden können.

[B]RPOPPLUSH ist perfekt für dieses Szenario; Es kann eine Nachricht atomar aus der Nachrichtenwarteschlange entnehmen und in eine Verarbeitungswarteschlange verschieben, sodass die Anwendung im Falle eines Fehlers auf der Verbraucherseite reagieren kann.

http://redis.io/commands/rpoplpush

Das eigentliche erneute Einreihen in die Warteschlange bleibt der Anwendung überlassen, aber dieser redis-Befehl bietet die Grundlage dafür.

Es gibt auch einige Drop-in-Place-Implementierungen von Warteschlangen mit Redis, die im Internet herumschwirren, wie etwa RestMQ [ http://www.restmq.com/ ]