争吵 XMPP

2022-09-02 21:26:50

维基百科定义为:XMPP

...基于 XML 的面向消息的中间件的开放标准通信协议。

xmpp.org 定义为:XMPP

可扩展消息传递和状态协议 (XMPP) 是一种用于实时通信的开放式 XML 技术,它支持广泛的应用程序。

虽然我确信这两个定义都非常准确,但它们并没有告诉我我 - 一个Java开发人员 - 实际上可以用XMPP做什么

例如,我听说XMPP可以与面向消息的middleare(MOM)一起使用。怎么会这样?XMPP能否以某种方式与我的Apache Camel路由,我的ESB或某些SOA实现集成,以提供更好/更快/更强大的业务层?如果是这样,如何?!?!

一个好的,国王的英语XMPP解释,以及一些实际的例子(最好是以妈妈为中心)将不胜感激。提前致谢!


答案 1

XMPP 可用于各种基于消息传递的应用程序。基本上,它提供了可用于构建基于 XML 的消息传递应用程序的核心服务。它基于分散的客户端 - 服务器架构,并利用长寿命的TCP连接进行通信...

核心服务包括...

  • 通道加密,身份验证,状态,联系人列表,一对一消息传递,多方消息传递,通知
  • 服务发现、功能播发、结构化数据格式、工作流管理、点对点媒体会话

教科书用例...

  • 即时消息(使用状态、联系人列表、一对一消息传递)
  • 群聊、游戏、系统控制、地理定位、中间件/云计算、数据联合
  • 机器人(天气、数据库接口、系统监控)

消息传递模式/模式...

  • 点对点消息传递用于发送到特定的接收方
  • 多用户消息传递用于向一组接收方发送消息
  • 当存在大量事件并且系统对不同的事件子集感兴趣时,将使用发布/订阅支持。发布者将事件放入主题中,订阅者指示他们感兴趣的主题。这将发布者/订阅者分离,并允许可扩展的实时消息传递。有关详细信息,请参阅此文章:http://www.isode.com/whitepapers/xmpp-pubsub.html

部署方法...

  • XMPP 用户 - 以普通用户身份连接并响应发送给用户的请求
  • XMPP 服务器插件 - 作为服务器插件体系结构的一部分进行部署
  • XMPP 组件 - XMPP 服务器外部的服务,其连接和行为类似于插件

Java 集成

  • Smack API - 一个纯Java库,它可以嵌入到您的应用程序中,以创建从完整的XMPP客户端到简单的XMPP集成(例如发送通知消息和支持状态的设备)的任何内容。
  • 骆驼 XMPP - 一种骆驼组件,允许在骆驼路由中与 Smack API 集成

对于您的具体问题“它可以在SOA/中间件中使用吗?....

  • 是的,它可用于通过 XML 消息传递和 XMPP API 将应用程序连接在一起
  • 是否是最佳技术选择在很大程度上取决于需求
  • 一个很好的用例,交互式系统监控/管理...这里有一些其他的例子

此外,XMPP与Camel的集成也是微不足道的。请参阅此 camel-xmpp 单元测试,了解与 Google Talk 服务器接口的基本示例。此外,Camel的框架允许您构建一个应用程序,并轻松交换不同的消息传递技术(JMS,STOMP,mina等)。


答案 2

我可以开始使用Google(关键字:XMPP Java MoM示例)组合来自互联网上所有类型的来源的信息,重写(甚至复制)XMPP的定义,但我当然不会这样做。实在是太多了。我也没有例子可供你使用。

下面我将列出我发现最有趣的链接,以便您可以开始阅读并获得有关该主题的更多知识。

1)http://www.xmpp.org/ 这可能是最好的起点。浏览菜单从左到右和从上到下。这就是我所做的。该站点列出了服务器,客户端和库,因此您应该能够以这种方式找到所需的示例。

2)http://www.ibm.com/developerworks/webservices/library/x-xmppintro/index.html Clear文章,其中也提到了MoM。没有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 有趣的文章,最后一行基本上是说:如果你可以使用AMQP或JMS,为什么要使用XMPP?

我希望这能帮助你找到你需要的东西。


推荐