Repository navigation
QuestionThere are many questions related to the SQS source, and since I am currently investigating SQS, I figured it was worth consolidating them into a single summary question. At the moment, we have several very busy SQS queues, with many billions of events per day. vector is handling this with ease (awesome work to everyone who's worked on the source/sink ❤️ ) Concurrency The existing concurrency model has some room for improvement. When the SQS queue is very busy, all of the nodes' concurrency is running well, and we may see a slight increase in the max message age. However, when the message rate is slower, the number of consumers per host remains constant. This results in the CloudWatch metric I've had a look at how this is handled in other sources or sinks, and there are several approaches. The current implementation of the SQS sink uses an adaptive concurrency model that appears to be based on round-trip time. A similar approach could be used to dynamically adjust the concurrency based on the message attribute A Another common approach across sinks is the Message attributes There are many different discussions and issues that cover this; it seems to be something that isn't outright rejected and is looking for someone to implement it. While I am sure that many people overload the use of attributes, one use case that is useful is encoding the source request_id or similar application metadata in the attributes and leaving the original message intact. Sometimes this is used for routing decisions because the message doesn't need to be deserialised or parsed. Has anyone put any time into thinking about a preferred implementation for handling message attributes? My naive thinking has been to use the SQS DLQ SQS supports DLQ, in the scenario where receiving messages from external "untrusted" sources is possible, messages may not be well formed, or may have become corrupted (rare). Has there been any discussion about adding DLQ support for messages that can't be processed correctly the first x times? These are items that we are in a position to resolve through sending in a PR, particularly the concurrency item as it's currently an item showing up in our aws bills. These would be submitted as separate smaller PR's based on whatever path forward can be agreed to (or not). Thanks in advance, James. Vector ConfigNo response Vector LogsNo response |
Replies: 1 comment 1 reply
|
Thanks, James. Separate issues and PRs make sense for these changes.
Please don't hesitate to followup in this thread if you have further questions. |
Thanks, James. Separate issues and PRs make sense for these changes.
dropped_fieldsserves a different purpose: retaining values removed from events by semantic meaning.