Работа с Amazon SQS & SNS в Java
Впервые я столкнулся с Amazon SQS и Amazon SNS. Я буду работать с ними на моем рабочем месте в Java.
У меня есть несколько вопросов по этому поводу,
Я не обладаю таким большим знанием Java, я не могу сказать, что я продвинулся так далеко, но да, я могу сказать, что у меня есть промежуточные знания. Так можно ли мне трогать эти области?
Что это за услуги и чем они полезны? Пример из реального мира будет полезен.
Любые предложения или комментарии будут полезны.
2 ответа
Я бы не сказал, что вам нужны продвинутые знания Java для их использования, но почему бы не попробовать и судить самим? AWS SDK для Java доступен по адресу http://aws.amazon.com/sdkforjava/
На http://aws.amazon.com/sns/ и http://aws.amazon.com/sqs/ вводная информация, а также ссылки на подробную документацию.
SQS полезен, когда вам нужно отправить надежные асинхронные сообщения между частями системы через Интернет. Это экономит ваши усилия и затраты на настройку собственной надежной службы обмена сообщениями и обеспечивает масштабируемость. Это полезно, когда сообщения не должны приходить мгновенно, но не должны пропадать. Биллинг (записи о продажах) и другие не срочные финансовые операции были бы примером. Обратите внимание, что SQS обеспечивает поведение "хотя бы один раз" - в редких случаях оно может доставлять сообщение более одного раза.
SNS - публикация-подписка, а не на основе очереди; это более удобный стиль обмена сообщениями с использованием тем и подписок, а не простых очередей. Этот стиль полезен, когда производитель информации может не знать всех потенциальных потребителей информации и их точных потребностей. См. Примеры приложений в FAQ на http://aws.amazon.com/sns/faqs/
Они должны использоваться для поддержки надежной связи между вашими программными компонентами. Я думаю, что главный вопрос здесь заключается в том, почему вы должны разделить свои сервисы на несколько компонентов / уровней.
Я придумал несколько вариантов использования:
длительный процесс, который может повлиять на скорость отклика в Интернете: наиболее распространенным примером является обработка заказов, когда оплата с помощью платежа / кредитной карты может быть немного медленной, вы создаете одну службу, которая дает пользователю быстрый ответ, а затем отправляет сообщение в очередь SQS, который запускает компонент backoffice, который выполняет всю тяжелую работу;
различные профили масштабируемости: типичным примером может служить веб-приложение, в которое вы загружаете видео и кодируете его на несколько платформ; вам может потребоваться создать разные группы автоматического масштабирования с различными компонентами, загрузкой / просмотром видео (на многих серверах) и кодированием видео с меньшим количеством серверов, но с более высокая емкость, использование будет аналогично предыдущему примеру.
инициировать выполнение параллельных действий: после обработки заказа вы должны отправить электронное письмо своему клиенту, уведомить склад для подготовки таможни к доставке, сообщить транспортной службе, чтобы забрать товары на складе и доставить по адресу клиента, затем вы следует использовать тему SNS, где вы публикуете бизнес-событие и слушаете 3 компонента, которые выполняют следующее:
- Форматирование и отправка почты
- Складской сервисный вызов
- Транспортная служба вызова
Может быть много других сценариев использования, если вы скажете, что должно делать ваше решение, возможно, мы могли бы помочь более точно.