Вариант 1. Использование Amazon SNS для разветвления в очереди Amazon SQS
Если у вас есть доступ к процессу, который отправляет сообщение в очередь Amazon SQS, вы можете изменить его:
- Отправить сообщение на тему Amazon SNS
- Подписаться очереди Amazon SQS на тему SNS
Таким образом, когда сообщение отправляется в SNS, оно будет пересылаться во все подписанные очереди SQS. Это позволяет избежать копирования сообщений между очередями.
Обязательно настройте подписки SQS для Необработанная доставка сообщений , чтобы они получали точно такое же сообщение, которое было первоначально отправлено в SNS.
Вариант 2: повторяющиеся сообщения
Если у вас нет возможности изменить способ отправки сообщений и вам действительно нужно копировать сообщения из одной очереди в другую, вам потребуется написать программу для этого. Для этого необходимо:
- Зацикливаться в исходной очереди, вызывая
ReceiveMessages()
несколько раз, чтобы получить каждое сообщение, передавая высокое значение VisibilityTimeout
- Используйте
SendMessage()
для отправки сообщения в очередь назначения
- Не удалять исходное сообщение (это приведет к тому, что сообщения будут оставаться невидимыми в течение определенного периода)
В вызове ReceiveMessage()
можно указать период VisibilityTimeout
. Установите это значение очень высоким, чтобы сообщения больше не отображались до тех пор, пока не будут получены все сообщения. Это предотвратит обработку сообщений более одного раза.
Новые сообщения в очереди назначения не будут идентичны исходным сообщениям, поскольку они будут иметь разные идентификаторы и временные метки. Однако содержимое самого сообщения будет сохранено.