aws sns публикует сжатые данные

MongoDB позволяет вам использовать cursor.count() даже при передаче limit() или skip().

Допустим, у вас есть db.collection с 10 элементами.

Вы может сделать:

async function getQuery() {
  let query = await db.collection.find({}).skip(5).limit(5); // returns last 5 items in db
  let countTotal = await query.count() // returns 10-- will not take `skip` or `limit` into consideration
  let countWithConstraints = await query.count(true) // returns 5 -- will take into consideration `skip` and `limit`
  return { query, countTotal } 
}
0
задан Amit Kumar 16 January 2019 в 19:29
поделиться

2 ответа

Вы уже взглянули на это? https://docs.aws.amazon.com/sns/latest/dg/sns-large-payload-raw-message-delivery.html

Если вы считаете, что файл может увеличить время я предлагаю другой подход.

Поместите файл в корзину S3 и прикрепите уведомление о событии S3 к SNSTopic, чтобы все потребители были уведомлены о готовности нового файла к обработке. Другими словами, сообщением SNS будет местоположение файла, а не сам файл. Подумай об этом.

0
ответ дан gccodec 16 January 2019 в 19:29
поделиться

Вы можете сжать тело сообщения - , однако - тела сообщения SNS поддерживают только символьные данные UTF-8. Сжатые данные являются двоичными, поэтому они не совместимы напрямую с SNS, поскольку не каждая возможная последовательность байтов также является допустимой последовательностью символов UTF-8.

Итак, после распаковки полезной нагрузки вам необходимо кодировать эти двоичные данные, используя схему типа base-64. Base-64 кодирует произвольные двоичные данные (8 бит на байт), используя только 64 (что составляет 2 ^ 6, что фактически дает 6 бит на байт) символы, поэтому в результате этого число байтов увеличивается на 8/6 (133%). кодирование. Это означает, что 192 КБ двоичных данных кодируется в 256 КБ данных в кодировке Base-64, поэтому максимально допустимый размер вашего сообщения после gzip становится 192 КБ (поскольку ограничение SNS составляет 256 КБ). Но все символы base-64 являются действительными однобайтовыми символами UTF-8, что является существенной причиной, почему это кодирование используется так часто, несмотря на увеличение его размера. Это и тот факт, что gzip обычно имеет степень сжатия, намного превосходящую 1,33: 1 (что является точкой безубыточности для gzip + base-64).

Но если ваши сообщения будут gzip до 192K или ниже, это определенно работает с SNS (а также SQS, который имеет тот же набор символов и ограничения размера).

0
ответ дан Michael - sqlbot 16 January 2019 в 19:29
поделиться