Add a method to clear all messages from a channel
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 45/100
- Issue-Typ
- Feature
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Ruhig
- Tech-Stack
- php, rabbitmq, redis
- Bereich
- backend, distributed-systems
Rechercherichtung
Beginne mit dem Lesen von AdapterInterface und den vorhandenen push/status-Einstiegspunkten und untersuche anschließend die Redis-, AMQP- und In-Memory-Adapter. Kläre die Fragen zur Bezeichnung von purge versus clear und zur Kanalsignatur; fertig ist die Aufgabe, wenn die Opt-in-Schnittstelle und die vorgeschlagenen Adapterimplementierungen das Leeren eines Kanals ermöglichen, ohne die primäre Schnittstelle zu ändern.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Proposed new feature or change
There's no programmatic way to empty a queue. It comes up in three places:
- Maintenance - a
queue:purgecommand or an admin button to drop a queue that got flooded with poison pills or jobs that are no longer wanted. - Deployments - clearing a queue during a release when the payload structure changed and old queued jobs would crash on the new code.
- Testing - resetting state between runs. Shelling out to
redis-cliorrabbitmqctlmakes the test suite fragile and awkward to run in containerized CI.
I wouldn't put this on AdapterInterface - that would break every existing implementation and it overlaps with the "not the job of the primary interface" point from #271. A separate opt-in interface fits better:
interface PurgeableInterface
{
public function purge(): void;
}
Adapters implement it when the backend can do it cheaply (Redis drops the channel keys, AMQP calls queue_purge, the in-memory adapter resets its array). Callers check for it:
if ($adapter instanceof PurgeableInterface) {
$adapter->purge();
}
Open questions:
- Name:
purge()(broker vocabulary) orclear()? - Signature:
purge(): voidon the adapter's current channel (consistent withpush/status, which don't take a channel) orpurge(string $channel)?
Worth pursuing? Happy to send a PR if you're good with it (core + redis/amqp).
- Vorherrschende Sprache
- PHP
- Sterne
- 61
- Forks
- 31
- Ø Merge
- 1 T. 19 Std.
- Gemergte PRs (30 T.)
- 6
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus yiisoft/queue
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 56/100
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 45/100
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
-
Improve test coverageEvtl. vergeben @viktorprogger hat das vor 2237 Tagen übernommen. Offenstatus:ready for adoption type:test
Ähnliche Issues
-
sync-en
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
Maintainer antworten meist innerhalb von 1 Tag
-
sync-en
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 4 Tagen
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
ProfessionalWiki/NeoWiki#1637 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Перевод устарел
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 85/100
-
bug
Schwierigkeit 2/5 Ein halber Tag Anfängerfreundlichkeit 76/100
m3ue/m3u-editor#1604 ·
Maintainer antworten meist innerhalb von 1 Tag