争抢XMPP

IAm*_*aja 16 java soa xmpp esb apache-camel

维基百科定义XMPP为:

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

xmpp.org定义XMPP为:

可扩展消息传递和在线协议(XMPP)是一种用于实时通信的开放式XML技术,可为各种应用提供支持.

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

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

一个很好的,英语 - 英语对XMPP的解释,以及一些实际的例子(更好的以MOM为中心)将不胜感激.提前致谢!

Ben*_*Day 17

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

核心服务包括......

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

教科书用例......

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

消息模式/模式......

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

部署方法......

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

Java集成

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

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

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

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