将 MQTT 与 IBM App Connect Enterprise 配合使用

使用 IBM® App Connect Enterprise 通过 MQ Telemetry Transport (MQTT) 消息传递协议连接到发送和接收消息的应用程序和设备。

您可以使用 IBM App Connect Enterprise 中的内置 MQTTSubscribeMQTTPublish 节点来支持以下操作:
  • 接收发布到 MQTT 服务器上托管的一个或多个主题的消息。
  • 从流内将消息发布到 MQTT 服务器上托管的主题。
所有 MQTT 消息都必须符合 MQTT 协议规范

通过使用 MQTTSubscribe 节点预订 MQTT 服务器上的一个或多个主题,可以创建消息流以接收 MQTT 消息。 您可以通过在消息流中使用 MQTTPublish 节点将消息发布到 MQTT 服务器上的主题来发送 MQTT 消息。 接收和发送消息时,MQTT 节点的行为类似于 MQTT 客户机。

有关如何在消息流中使用 MQTT 节点的更多信息, 包括如何使用 Security identity 节点属性连接到需要认证的 MQTT 服务器, 请参阅以下参考主题:

有关如何使用 IBM App Connect Enterprise 将 MQTT 应用程序或设备与其他技术集成的示例在 GitHub 上作为 mqtt-client-connector 项目的一部分提供。 此示例包含模拟血压监视器的简单 Java™ 应用程序,以及执行基于内容的路由的消息流。 消息流包含 MQTTSubscribe 节点 (用于预订血压监视器应用程序发布的消息) 和 MQTTPublish 节点 (用于将血压监视器读数发布到不同主题)。 有关此示例的更多详细信息,请参阅 GitHub上的 MQTT 连接器样本

MQTT 连接的客户机标识

客户机标识是一个字符串,长度为 1 到 23 个字符之间,用于向 MQTT 服务器标识 MQTT 客户机。 连接到单个服务器的每个客户机必须使用唯一的客户机标识。 如果客户机尝试使用已在使用的客户机标识连接到 MQTT 服务器,那么该服务器将断开第一次客户机连接,并且改为接受新连接。

开发消息流时,您必须为该消息流中的每个 MQTT 节点指定一个唯一的客户机标识。 可通过覆盖 BAR 文件中的值或通过连接节点策略来操作地管理客户机标识。 有关更多信息,请参阅 mqsiapplybaroverride 命令使用策略在运行时覆盖属性。 在部署时,您必须确保要连接到同一服务器的任何 MQTT 节点都具有唯一的客户机标识。

如果您指定了长度超过 23 个字符的客户机标识,那么当 MQTT 节点连接到 MQTT 服务器时,将仅使用最后 23 个字符。

可扩展性

要提高消息流可处理由 MQTTSubscribe 节点接收的消息的速率,请使用 Additional instances 属性。 此属性用于增加单个集成服务器中节点可用于处理消息的线程数。 增加此属性的值不会影响可用于接收消息的输入连接器的数目。

在附加集成服务器之间部署消息流不会增强可扩展性,原因如下:
  • 每个集成服务器中的 MQTTSubscribe 节点将使用相同的客户机标识,并且 MQTT 服务器仅允许一个实例使用特定客户机标识进行连接。
  • 如果您将每个节点实例配置为使用唯一的客户机标识并预订同一主题,那么发布到该主题的每条消息都将发送给所有订户。