quickwit-oss / quickwit

Cloud-native search engine for observability. An open-source alternative to Datadog, Elasticsearch, Loki, and Tempo.
https://quickwit.io
Other
6.99k stars 291 forks source link

Add Queue source with SQS implementation #5148

Open rdettai opened 2 weeks ago

rdettai commented 2 weeks ago

Description

This PR proposes the generic implementation of a "queue" source. For now, only an implementation for AWS SQS with its data backed by AWS S3 is exposed to the users. Google Pubsub as the queue implementation or inlined data (i.e messages containing the data itself and not the link to the object store) will come next.

We use the shard API to provide deduplication of messages. For the current implementation where the source data is stored on S3, the deduplication is made on the object URI.

High level summary of the abstractions that are part of the generic implementation:

TODO:

TODO in subsequent PRs:

How was this PR tested?

This PR contains unit tests and higher level tests that use LocalStack.

github-actions[bot] commented 2 weeks ago

On SSD:

Average search latency is 1.01x that of the reference (lower is better).
Ref run id: 2337, ref commit: 4ade7b5ec59685fc508c1834f2e23b5ca7b5afbe
Link

On GCS:

Average search latency is 0.981x that of the reference (lower is better).
Ref run id: 2339, ref commit: 4ade7b5ec59685fc508c1834f2e23b5ca7b5afbe
Link

fulmicoton commented 1 week ago

we need a different handling of transient vs non-transient error. e.g. in the message parsing -> non-transient disconnection while streaming file -> transient... gzip corruption -> non-transient.

rdettai commented 1 day ago

Note: I just stumbled upon https://github.com/quickwit-oss/quickwit/issues/1065 which is addressed as part of the reorganization of the FileSource that is happening here: