Skip to content

Alternatives Analysis

Alternatives analysis

ChokaQ выбирает SQL Server как первый durable backend. Это product decision, а не утверждение, что SQL - лучшая queue для каждого workload.

Comparison

BackendStrengthTrade-offBest fit
SQL ServerDurable, transactional, inspectable, easy for SQL shops.Central DB bottleneck.Business jobs, operational repair, moderate/high reliability needs.
RabbitMQMature broker, routing, acknowledgements.Separate infrastructure and management model.Message routing and broker-native workflows.
KafkaMassive throughput, replayable log.Operational complexity and different semantics.Event streaming, analytics, replay-heavy systems.
SQSManaged queue, simple scale.Cloud-specific and less queryable.AWS-first systems that want managed infrastructure.
PostgreSQLStrong relational backend.Provider work and different lock semantics.Teams standardized on PostgreSQL.
In-memory channelsVery fast and simple.Not durable.Tests, demos, disposable local work.

Почему SQL first?

SQL Server дает ChokaQ compact production story:

  • jobs - это rows;
  • state queryable;
  • final transitions transactional;
  • operators могут inspect'ить те же data, которые использует runtime;
  • samples можно запускать с Docker;
  • многие enterprise .NET teams уже эксплуатируют SQL Server.

Почему SQL before broker backends?

Broker-first product потребовал бы отдельный durable history/repair store для поддержки The Deck, DLQ editing, history paging, failure grouping и SQL-like inspection. SQL делает это state native.

Архитектурное решение

Первый backend - SQL Server, потому что ChokaQ оптимизируется под inspectable, transactional background jobs в .NET systems, а не под maximum broker throughput или event-stream replay. Это решение выравнивает storage, state transitions, operator UI и repair workflows вокруг одной durable relational model.

Это не universal claim. Kafka, RabbitMQ, SQS, PostgreSQL и in-memory channels имеют contexts, где они подходят лучше. Поэтому documentation описывает SQL Server как deliberate product default для этого release, а не как единственный возможный backend навсегда.

Extension path ориентирован на providers: другой backend должен воспроизвести те же lifecycle semantics, а не просто accept и deliver messages.

Дополнительные вопросы

Когда Kafka подходит лучше?
Когда core requirement - high-volume ordered event streaming и replay, а не operator-managed background jobs.

Когда RabbitMQ подходит лучше?
Когда routing, exchange semantics и broker-native acknowledgements находятся в центре системы.

Что потребует PostgreSQL provider?
Provider package с equivalent schema, fetch semantics, lock behavior, transactions, health checks и migration scripts.

Лицензия Apache 2.0