Перепутывание XMPP
Википедия определяет XMPP
как:
... открытый протокол связи для ориентированного на сообщения промежуточного программного обеспечения на основе XML.
xmpp.org определяет XMPP
как:
Расширяемый протокол обмена сообщениями и присутствия (XMPP) - это открытая технология XML для обмена в реальном времени, которая поддерживает широкий спектр приложений.
Хотя я уверен, что оба эти определения очень точны, они не говорят мне что-то о том, что я - разработчик Java - может реально делать с XMPP!
Например, я слышал, что XMPP можно использовать с ориентированным на сообщения middleare (MOM). Как так? Может ли XMPP каким-то образом интегрироваться с моими маршрутами Apache Camel, моей ESB или некоторой реализацией SOA, чтобы обеспечить лучший/быстрый/более надежный бизнес-уровень? Если да, как?!?!
Хорошее английское объяснение XMPP, а также некоторые практические примеры (предпочтительный MOM-ориентированный) были бы весьма полезны. Спасибо заранее!
Ответы
Ответ 1
XMPP может использоваться для широкого спектра приложений на основе обмена сообщениями. В основном, он предоставляет основные службы, которые могут использоваться для создания приложений обмена сообщениями на основе XML. Он основан на децентрализованной архитектуре клиент-сервер и использует долговременные TCP-соединения для связи...
основные службы включают...
- шифрование каналов, аутентификация, наличие, списки контактов, индивидуальные сообщения, многопользовательские сообщения, уведомления
- обнаружение сервисов, реклама возможностей, структурированные форматы данных, управление рабочими процессами, сеансы обмена между одноранговыми серверами.
примеры использования учебников...
- обмен мгновенными сообщениями (использование присутствия, списки контактов, обмен сообщениями один к одному)
- групповой чат, игры, системный контроль, геолокация, промежуточное ПО/облачные вычисления, синдикация данных.
- боты (погода, интерфейс базы данных, системный мониторинг)
режимы/шаблоны обмена сообщениями...
- Обмен сообщениями точка-точка используется для отправки в конкретный приемник
- многопользовательская передача сообщений используется для сообщения группе получателей.
- Поддержка публикации/подписки используется, когда имеется большой объем событий, и системы заинтересованы в разных подмножествах событий. Издатели помещают события в темы, и подписчики указывают, какие темы они интересуют. Это отделяет издателя/подписчика и позволяет масштабировать обмен сообщениями в реальном времени. Для получения дополнительной информации см. Эту статью: http://www.isode.com/whitepapers/xmpp-pubsub.html
методы развертывания...
- Пользователь XMPP - подключается как обычный пользователь и отвечает на запросы, адресованные пользователю
- Плагины сервера XMPP - развернуты как часть архитектуры плагина сервера
- Компоненты XMPP - сервис, внешний для сервера XMPP, который подключается и ведет себя как плагин
Интеграция с Java
- Smack API - чистая библиотека Java, она может быть встроена в ваши приложения для создания чего-либо от полного клиента XMPP до простой интеграции XMPP, такой как отправка уведомлений и устройства для обеспечения присутствия.
- Camel XMPP - компонент Camel, который позволяет интегрировать с Smack API в маршруты Camel.
К вашему конкретному вопросу "может ли он использоваться в SOA/промежуточном программном обеспечении?"....
- да, его можно использовать для объединения приложений через XML-сообщения и API-интерфейсы XMPP.
- зависит ли его лучший выбор технологии от требований
- один хороший вариант использования, интерактивный мониторинг/управление системой... вот некоторые другие примеры
Кроме того, интеграция XMPP с Camel тривиальна. Посмотрите camel-xmpp unit test для базового примера взаимодействия с сервером Google Talk. Кроме того, Camel framework позволяет вам создавать приложение и легко заменять различные технологии обмена сообщениями (JMS, STOMP, mina и т.д.).
Ответ 2
XMPP является открытым и расширяемым стандартом для обмена в реальном времени.
XMPP поставляется с ядром, которое определено в его rfc, которое описывает базовый протокол для обмена мгновенными сообщениями и обмена информацией о присутствии. Однако там, где XMPP действительно сияет, в его расширяемости: XMPP определяет строительные блоки (наличие, сообщение и iq stanzas) для создания протоколов связи. Обычно они появляются как расширения. Список доступных стандартных расширений можно найти здесь. Наиболее важные из них обычно доступны для всех популярных серверов XMPP.
Именно эта расширяемость делает XMPP подходящим в качестве ориентированного на сообщения промежуточного программного обеспечения.
Позвольте мне привести пример публикации-подписки, который является типичным шаблоном для промежуточного программного обеспечения и становится необходимым, как только вы отходите от сценария с несколькими объектами, где достаточно простого обмена сообщениями. PubSub используется в ситуациях, когда предприятия или производители создают информацию, которая должна потребляться другими организациями, потребителями. Как правило, информация записывается в узлы, на которые подписываются потребители. При подписке они получают уведомления, когда элемент добавляется/обновляется/удаляется. Невероятное количество прецедентов может быть элегантно покрыто PubSub, от очереди на длительные рабочие места и с рабочими обрабатывать их, для микро-блогов. XMPP имеет очень надежное и широко доступное расширение для управления PubSub стандартным способом, описанным в XEP-0060 и предоставляя из коробки рабочий процесс для обработка публикации, подписки, уведомления и безопасность. Взгляд на прецеденты в XEP даст вам представление об простоте всего этого.
Теперь, когда большинство случаев использования покрываются за счет использования (или злоупотребления) существующих стандартных расширений, в конечном итоге вам может понадобиться небольшой дополнительный пользовательский протокол, который не рассматривается в другом месте. Используя свой язык выбора, вы можете написать компонент XMPP, определяющий ваш собственный протокол. Затем вы подключаете компонент к серверу XMPP, который вы используете, и используя простую систему имен, пусть сервер знает, какие сообщения вы можете обрабатывать, и пусть сервер будет рекламировать ваши возможности протокола для клиентов, подключающихся к нему. Нет конца тому, насколько простым или сложным вы можете это сделать. Отсутствие лучшего примера, но, возможно, достаточно хорошего для иллюстрации, здесь - это компонент, который я написал, который использует XMPP для совместной работы в режиме реального времени в Plone CMS (аналогично документам Google). Хотя подробности могут усложниться, я думаю, что просмотр "Спецификации протокола" на этой странице даст вам представление.
Наконец, в отношении конкретных библиотек Java, которые упоминаются в @boday, есть библиотеки, которые позволяют легко начинать с интеграции Apache Camel (хотя, насколько я понимаю, он просто делает простой обмен сообщениями). Имейте в виду, что инвестиции в понимание того, как работает XMPP, и возможность выйти за рамки использования существующих библиотек, действительно того стоит и могут привести к чрезвычайно сильной и простой интеграции.
Ответ 3
Я могу начать комбинировать информацию из всех источников источников, найденных в Интернете, используя Google (ключевые слова: примеры Java MM XMPP), переписать (или даже скопировать) определение XMPP, но, конечно, я этого не сделаю. Слишком много. У меня также нет доступных для вас примеров.
Ниже я перечислил ссылки, которые я нашел наиболее интересными, поэтому вы можете начать читать и получать больше знаний по этому вопросу.
1) http://www.xmpp.org/
Вероятно, это лучшая отправная точка. Просмотрите меню слева направо и сверху вниз. Это то, что я сделал. На сайте перечислены серверы, клиенты и библиотеки, поэтому вы должны найти нужные примеры таким образом.
2) http://www.ibm.com/developerworks/webservices/library/x-xmppintro/index.html
Четкая статья, в которой также упоминается МММ. Нет примеров Java, но Ruby.
3) http://fyi.oreilly.com/2009/05/what-can-you-do-with-xmpp.html
Может быть, вам стоит просто взять книгу? В этой статье нет примеров.
4) http://kirkwylie.blogspot.com/2008/07/real-mom-is-hard-lets-use-xmpp.html
Интересная статья, в которой последняя строка в основном говорит: зачем использовать XMPP, если вы можете использовать AMQP или JMS?
Надеюсь, это поможет вам найти то, что вам нужно.
Ответ 4
Позвольте мне дать вам хороший обзор того, что XMPP?
- XMPP (расширяемый протокол обмена сообщениями и присутствия)
- Это протокол связи в реальном времени.
- Первой услугой IM, основанной на XMPP, был Jabber.org
- Одна привязка XMPP BOSH. Другие включают TCP и WebSocket.
- BOSH - это "Двунаправленные потоки через синхронный HTTP", технология двусторонней связи по протоколу передачи гипертекста (HTTP).
- BOSH эмулирует многие примитивы транспорта, которые знакомы из протокола управления передачей (TCP). Для приложений, которые
требуют как "push", так и "pull" сообщений, BOSH значительно
более эффективная пропускная способность и отзывчивость, чем большинство других двунаправленных
HTTP-протоколы и методы, известные как AJAX.
- BOSH достигает этой эффективности и низкой задержки при длительном опросе.
Как работает XMPP?
XMPP достигает низкой задержки, применяя Длительный опрос.
Что такое Обычный опрос и Длительный опрос?
НОРМАЛЬНЫЙ ОПРОС:
![введите описание изображения здесь]()
Рассмотрим старые приложения чата, которые использовали обычный опрос. Здесь верхняя часть графика указывает сторону клиента. Нижняя часть указывает на сторону сервера. Пусть тайм-аут будет 5 мин.
Client asks the server : " Is there any new message for me ?"
Server Responds : "No ! "
After 5 min
Client asks the server : " Is there any new message for me ?"
Server Responds : "No !"
After 1 min
Client Receives a message
After 4 min
Client asks the server : " Is there any new message for me ?"
Server Responds : "Yes! " + message.
ДЛИТЕЛЬНАЯ ОПЛАТА
![введите описание изображения здесь]()
Верхняя часть графика - клиент. Нижняя часть - сервер.
Client asks the server : " Is there any new message for me ?"
Server Answers : "No ! But you may soon receive a new message, so let me just hold your client state for 5 min in the server."
After 5 min
Server Responds : "No !"
Client asks the server : " Is there any new message for me ?"
Server Answers : "No ! But you may soon receive a new message, so let me just hold your client state for 5 min in the server."
After 1 min
Client Receives a message
Server Responds : "Yes! " + message.
Вы можете ясно видеть, как мгновенно происходит общение.
Вы можете узнать больше о XMPP ЗДЕСЬ
В случае, если вам интересно настроить собственный сервер XMPP, прочитайте this.
Ответ 5
XMPP является в основном протоколом для клиентов чатов, чтобы поговорить с чат-сервером. Camel позволяет вам интегрироваться с XMPP, чтобы вы могли потреблять сообщения или создавать такой механизм http://camel.apache.org/xmpp.html
Когда вы начинаете говорить о бизнес-уровне, ESB, SOA и т.д. и MOM, вы, вероятно, ищете механизм обмена сообщениями, который поддерживает точку-точка и публикует сообщения для подписки. Вероятно, вы также думаете о таких вещах, как гарантированный обмен сообщениями, высокая доступность и мелкозернистая безопасность. Вы не получите их от механизма, который читает и записывает текстовые сообщения на сервер чата. Платформа обмена сообщениями, такая как ActiveMQ, скорее всего, будет намного лучше.
Есть очень мало примеров, когда я рассматривал бы использование XMPP с механизмами интеграции, возможно, в качестве механизма уведомления в комнате чата dev или в качестве механизма канальной ленты для управления серверами, которые контролируют сервер чата для инструкций.