当前位置: 首页 > 工具软件 > Qpid > 使用案例 >

Qpid C++ 与 Java 互通 注意事项

邵君植
2023-12-01

Qpid C++ 与 Java 互通 注意事项

Qpid 对Broker和Client API(以下简称Client)分别提供了C++和Java版本,由于C++和Java版本是独立实现的,存在一些差异,所以互通时也有一些注意事项。

先来看看有哪些差异:

  1. 实现的AMQP版本差异
  • C++的Broker和Client实现了AMQP 0-10和1.0版本
  • Java的Broker和Client实现了AMQP 0-8,0-9,0-10和1.0版本
  1. 程序结构差异
  • Java Broker下可以有多个VirtualHost,而C++ Broker下没有VirtualHost的概念,相当于只有一个VirtualHost,即default VirtualHost;
  • Java Broker下有多个Port,C++ Broker下没有Port的概念,相当于只有一个AMQP Port
  1. 管理方式差异
  • C++ Broker的管理通过基于Qpid消息通信的QMF管理,提供多个基于Python API实现的命令行工具
  • Java Broker通过MANAGEMENT-HTTP插件实现WEB式GUI管理界面
  1. 默认配置差异
  • C++ Broker默认未开启认证,可以直接匿名连接,
  • Java默认开启plain方式认证,连接需要用户名密码
  1. 其他实现差异
  • 消息分组Java区分为Standard和Shared两种方式;C++仅实现Shared方式。

互通注意事项:

  1. 协议只能使用AMQP 0-10和1.0,这个可以通过自动协商事项,不需要关注;
  2. Java Client访问C++ Broker仅使用默认VirtualHost,不可指定;而C++ Client访问Java如不指定VirtualHost则访问默认VirtualHost,也可以通过Connection的open方法指定VirtualHost或者设置Connection的Option“virtualhost”来指定。
  3. 无法交叉管理,Java Broker没有实现QMF,无法用C++ Broker提供的命令行工具管理,C++ Broker也不支持WEB管理方式。
  4. Java Client中指定了用户名密码,C++ Broker设置为匿名访问是可以的;Java Broker设置了plain方式验证,C++ Client中需要指定用户名密码,可以使用Connection的open方法参数或者设置Option “username”和“password”;Java Broker可以通过管理工具将AMQP端口的验证方式修改为Anonymous来实现匿名方式;C++ Broker也可以开启用户验证来提升安全性;这些设置可以参考官方文档。
  5. Java客户端应用需要注意C++ Broker只实现了shared方式的消息分组。
 类似资料: