Add a method to clear all messages from a channel
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 45/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Tranquilo
- Stack tecnológico
- php, rabbitmq, redis
- Área
- backend, distributed-systems
Línea de trabajo
Empieza leyendo AdapterInterface y los puntos de entrada existentes de push/status; después, inspecciona los adaptadores de Redis, AMQP y en memoria. Resuelve las cuestiones sobre los nombres purge frente a clear y sobre la firma del canal; se considera terminado cuando la interfaz opt-in y las implementaciones de adaptadores propuestas permiten vaciar un canal sin cambiar la interfaz principal.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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).
- Lenguaje dominante
- PHP
- Estrellas
- 61
- Forks
- 31
- Merge medio
- 1 d 7 h
- PR fusionados (30 d)
- 9
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de yiisoft/queue
-
Adapter delay support flag Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 56/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
-
Improve test coverage Abiertostatus:ready for adoption type:test
Todos los issues de yiisoft/queue
Issues similares
-
status/awaiting_triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
WordPress/plugin-check#1486 ·
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
az-digital/az_quickstart#6019 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
grokability/snipe-it#19688 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100