This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC3220SF-LAUNCHXL:如何运行两个 MQTT 客户端

Guru**** 2595805 points
Other Parts Discussed in Thread: CC3220SF

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/774266/cc3220sf-launchxl-how-to-run-two-mqtt-client

器件型号:CC3220SF-LAUNCHXL
主题中讨论的其他器件:CC3220SF

我们将使用两个 MQTT 客户端并行。

1) 1)基于正常 TLS 的 MQTT

2) Watson IoT

如果我运行两个客户端并行一个(MQTT) MQTTClient_create return Success 和另一个(Watson IoT) return error 为什么返回错误?

普通 MQTT 

MqttClient_params.clientId = ClientID;
MqttClient_params.connParams =&MQTT_ClientCtx;
MqttClient_params.mqttMode31 = MQTT_3_1;
MqttClient_params.blockingSend = true;

/*初始化 MQTT 客户端库 *
WiFi_Connect.mqttClientHandle = MQTTClient_create (MqttClientCallback、
&MqttClient_params);
if (WiFi_Connect.mqttClientHandle = NULL)
{
UART_PRINT ("[MQTT Thread]错误- MQTT 客户端句柄为空\r\n");
返回-1;
} 

沃森物联网:  

IBMClient_params.clientId = IBM_ClientID;
IBMClient_params.connParams =&IBM_ClientCtx;
IBMClient_params.mqttMode31 = MQTT_3_1;
IBMClient_params.blockingSend = true;

/*初始化 Watson_IOI 客户端库*/
WiFi_Connect.IBM_ClientHandle = MQTTClient_create (IBMClientCallback、
IBMClient_params);
if (WiFi_Connect.IBM_ClientHandle ==空)
{
/* Lib 初始化失败*/
UART_PRINT ("[IBM Thread]错误- MQTT 客户端句柄为空\r\n");
返回-1;
} 

我也对这一个有疑问  

MQTTClient_run ((MQTTClient_handle) pvParameters); 

问题:

  1. 为什么我在另一个 MQTTClient_create 调用中遇到错误?
  2. 一个 MQTT (SLNETIF_ID_2)另一个 MQTT (SLNETIF_ID_3)是否正确 ?
  3. MQTTClient_run 能否直接传递句柄为什么示例代码传递 pvParameters 即时句柄?
  4. 最多可并行运行多少个 MQTT 客户端?

请帮助我解决此问题。

谢谢你

 瓦苏

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Vasu、

    MQTTClient_create()调用中的 MQTT 库似乎有一个检查,可防止在库未初始化的情况下多次调用该函数。 这意味着您不能同时连接到两台不同的服务器。 我将更仔细地研究这一点、看看这是否是预期行为、或者是否有方法/权变措施同时具有多个连接。

    此致、
    Michael
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Michael、

    我检查了 MQTT_Client 库两个不允许同时连接的服务器、只能进行单个 MQTT 客户端连接。

    cc3220sf 支持16个 TCP 连接和6个安全连接。

    问题:

    1. 已经有一个 MQTT_CLIENT (IBM IoT)正在运行如果我想再使用一种方法,我可以根据我的要求修改 MQTT_CLIENT 库的原始源代码,这是可行的吗?
    2. 否则,我需要使用 TCP 套接字编写自己的 MQTT_CLIENT 函数?  
    3. 还有其他解决方案吗?

    谢谢你

     瓦苏

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Vasu、

    可能可以修改 MQTTClient 库、但从粗略看一下代码、这很可能是一项乏味的任务。 MQTTClient_create()中不仅有检查,而且还有其他代码段仅在单连接假设中烘烤。

    如果一次必须连接到多台服务器、则最好找到另一个 MQTT 库、该库允许并发连接。 您应该可以在线使用第三方开源库。

    此致、
    Michael
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Michael、

    感谢您的建议。