Отправка сообщения в ActiveMQ через Интернет - PullRequest
4 голосов
/ 17 февраля 2011

Я хочу реализовать обмен сообщениями через Интернет.Но еще не было IP Public.Поэтому я хочу спросить любого здесь об отправке сообщения в ActiveMQ с использованием JMS через Интернет?

Можно ли это сделать?

Ответы [ 3 ]

3 голосов
/ 17 февраля 2011

Да, он предоставляет обычную конечную точку на основе TCP (по умолчанию на порту 61616).Однако это не будет рекомендуемой моделью развертывания - лучше будет представить конечную точку на основе http, используя контейнер сервлета, который внутренне передает сообщение посреднику activemq.

Есть много хороших решений, которые могут это сделать -

  1. Spring Integration , Apache Camel
  2. Exposingконечная точка веб-службы, использующая, скажем, Apache CXF (которая предоставит вам интерфейс, основанный на стандартах), который будет внутренне передавать сообщение ActiveMQ.
2 голосов
/ 04 апреля 2011

да, это можно сделать.в настоящее время у нас работает чуть менее тысячи «потребителей», которые подключаются к нашим брокерам через Интернет.

Что касается небезопасности трафика через Интернет, я не совсем согласен:

разоблачение веб-службы столь же рискованно, как и разоблачение брокера.В конце концов, вы никогда не уверены на 100%, что ваш собственный код или код или базовое приложение (Apache CXF, веб-сервер, сервер приложений, сервер базы данных, брокер сообщений) содержат недостатки, которые могут представлять угрозу безопасности.Во-вторых, HTTP - это столько же TCP-трафика, сколько ActiveMQ (протокол Stomp или openwire)

При этом вы можете принять все меры, чтобы снизить риск до минимума.

мы сделали следующее:

  • Имя пользователя и пароль, необходимые для подключения к брокеру (ActiveMQ поддерживает широкий спектр решений по аутентификации, и вы можете при необходимости применить собственное решение)

  • Переключить порт на другой номер, чтобы обнаружение было более сложным

  • , если вы также контролируете потребителей, примените IP-фильтры вбрандмауэр, по которому ip-ы могут подключаться к брокеру (к сожалению, в нашем случае это было невозможно)

  • шифровать ваши сообщения

  • Мы добавилиАутентификация на уровне приложения, а также с использованием токена.Таким образом, каждое сообщение аутентифицируется в нашем собственном приложении

-> если все это реализовано, я думаю, что вы достаточно безопасны и в качестве бонуса вам не нужен дополнительный слойвеб-сервисов (если это приложение нуждается в масштабировании, вам нужно будет масштабировать ваши веб-сервисы в равной степени с вашими брокерами.

1 голос
/ 31 декабря 2012

Простые соединения (openwire) должны быть в порядке. Гораздо проще придерживаться стандартной настройки, чем пытаться настроить веб-сервисы и еще много чего. Обязательно зашифруйте каналы с помощью SSL . Если вы используете простые пароли, они могут быть получены в общедоступных сетях (маловероятно, но в любом случае) - поэтому я предпочитаю SSL.

На самом деле ActiveMQ - это очень хороший способ связи через Интернет, поскольку он поддерживает транзакции и постоянство, что позволяет справляться с проблемами стабильности сети.

Однако, чтобы это работало, вам необходим общедоступный IP-адрес (или какое-либо решение для переадресации NAT / порта из общедоступного IP-адреса) на машине, на которой работает сервер ActiveMQ.

...