基于XMPP的发布订阅系统(一)
-
背景
运维人员在运维系统过程中,需要时刻关注系统的运行状态,在系统出现问题时去解决问题。
但这时可能已经导致系统交付能力延时,影响效益。其实有些问题可以通过通过提前预警的
方式通知运维人员快速处理问题,减少损失。运维中预警的方式有短信,邮件和企业微信等。
不过以上这些方式要么通知不及时,要么需要额外的费用。通过调研发现通过XMPP协议实现
发布订阅方式实现预警是可行的。本文后面是实现的详细步骤。 -
XMPP介绍
XMPP是一种基于标准通用标记语言的子集XML的协议,它继承了在XML环境中灵活的发展性。
因此,基于XMPP的应用具有超强的可扩展性。经过扩展以后的XMPP可以通过发送扩展的信
息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地址的服务等应用程
序。而且,XMPP包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发
者更容易建立客户应用程序或给一个配好系统添加功能。XMPP的开源框架有很多,这里我
选择QXmpp。QXmpp是一个跨平台的C++ XMPP客户端开发库,它是基于Qt库开发的.QXmpp是非常直观,易
于使用, Qt是唯一的第三方依赖库。 -
QXmpp编译
QXmpp下载地址
我们选择最新的版本1.3.1 Qt版本需求Qt5.7或更高版本,编译系统为CMake
Linux or Macx下编译$mkdir build $cd build $cmake -DCMAKE_INSTALL_PREFIX=../../qxmpp-sdk .. $cmake --build . $cmake --build . --target install $ls ../../qxmpp-sdk/ include lib $tree ../../qxmpp-sdk/lib ├── cmake │ └── qxmpp │ ├── QXmpp.cmake │ ├── QXmppConfig.cmake │ ├── QXmppConfigVersion.cmake │ └── QXmpp-noconfig.cmake ├── libqxmpp.so -> libqxmpp.so.3 ├── libqxmpp.so.1.3.1 ├── libqxmpp.so.3 -> libqxmpp.so.1.3.1 └── pkgconfig └── qxmpp.pcWindows下编译,通过Qt Creator打开CMakeLists.txt后在界面下编译即可。
-
设计
-
整个系统有三部分构成:
- XmppServer Xmpp服务器,负责系统登录,接收消息,转发消息
- XmppPublisher Xmpp消息发布器, 负责发布消息
- XmppSubscriber Xmpp消息订阅器,负责订阅消息
-
系统时序图

下一篇:基于XMPP的发布订阅系统(二)
-
本文探讨如何利用XMPP协议创建高效预警系统,旨在通过实时消息推送提升运维效率,减少系统故障带来的损失。介绍XMPP协议特性,使用QXmpp库进行开发,并详细描述系统架构,包括XmppServer、XmppPublisher及XmppSubscriber组件。

249

被折叠的 条评论
为什么被折叠?



