При использовании AWS SQS (Simple Queue Service) вы платите за каждый запрос к услуге (push, pull, ...).Максимум 256 КБ для каждого сообщения, которое вы можете отправить в очередь.
Чтобы сэкономить деньги, я бы хотел буферизовать сообщения, отправленные в приложение Go, прежде чем отправлять их в SQS, пока у меня не будет достаточно данных дляэффективно использовать ограничение в 256 КБ.
Поскольку мое приложение Go является веб-сервером, моя текущая идея состоит в том, чтобы использовать строковый мьютекс и добавлять сообщения до тех пор, пока я превышаю ограничение в 256 КБ, а затем выдать событие push SQS.Чтобы сэкономить еще больше места, я мог бы сжать каждое сообщение перед добавлением его в строку mutex.
Интересно, есть ли какой-нибудь поток gzip, который я мог бы использовать для этого.Я предполагаю, что сжатие всех объединенных сообщений приведет к меньшему размеру, чем сжатие каждого сообщения перед добавлением его в строковый мьютекс.Одним из способов было бы сжать мьютекс строки после каждого добавления, чтобы проверить его размер.Но это может быть очень медленно.
Есть ли лучший способ?Или есть лучший подход к каналам?Я все еще новичок в Го, я должен признать.