# C#: Kafka frente a RabbitMQ, qué significa confirmar progreso

Un modelo local distingue offsets por partición y acknowledgements por canal. Falla antes de confirmar y comprueba el reintento.

.NET SDK 9. Descarga Program.cs y Example.csproj en la misma carpeta. No requiere Kafka, RabbitMQ ni paquetes NuGet adicionales.

```sh
dotnet run --project Example.csproj
```

Salida esperada / Expected output:

```text
OK: failure unconfirmed; retry completed
```

## Ejercicio

Diseña una prueba de integración que detenga el proceso después de guardar el efecto y antes de confirmar. Define dónde deduplicarás una entrega repetida.

## English

C#: Kafka versus RabbitMQ, what confirming progress means

A local model distinguishes partition offsets from channel-scoped acknowledgements. Fail before confirmation and verify the retry.

.NET SDK 9. Download Program.cs and Example.csproj into the same directory. No Kafka, RabbitMQ or extra NuGet packages are required.

Design an integration test that kills the process after saving an effect but before confirming progress. Decide where a redelivery will be deduplicated.

## Scope / Alcance

Local contract model only. No broker connection, durable effects or exactly-once guarantee. / Modelo de contrato local: no conecta brokers ni garantiza efectos duraderos o exactly-once.

## Sources

- https://kafka.apache.org/42/design/design/
- https://www.rabbitmq.com/docs/confirms
- https://www.rabbitmq.com/docs/quorum-queues
