91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

RabbitMQ第四課 多線程收發異常

發布時間:2020-07-18 20:11:22 來源:網絡 閱讀:3541 作者:fengyuzaitu 欄目:編程語言

異常
    Internal error: unable to determine timeout reason

場景
    在調用rabbitMQ接收數據的時候,出現如上的錯誤。代碼斷點在amqp_consume_message函數,發現如果consume阻塞時,其他線程用該socket去發送數據,會導RabbitMQ里面amqp_tcp_socket.c里面amqp_tcp_socket_recv會退出,導致調用amqp_tcp_socket_recv的wait_frame_inner里面報異常

原因
    剛開始還以為多線程情況下,同時收發,沒有設置接收超時,就會出現上述問題,提出如下的解決方案:
 timeval valTimeOut;
 valTimeOut.tv_sec = 1;
 valTimeOut.tv_usec = 0;
 ret = amqp_consume_message(m_connState, &envelope, &valTimeOut, 0);
實際上并不是如此

解決
    C語言版本打開一個連接后是用一個結構體amqp_connection_state_t_作為句柄標示一個連接;該句柄不是線程安全的,庫是基于單線程,事件響應來設計的,多個線程同時使用,肯定會沖突的。因此收發都需要實例化不同的amqp_connection_state_t_連接,進行RabbitMQ的連接。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新源县| 古丈县| 木兰县| 南开区| 唐海县| 邢台县| 邵阳市| 林西县| 宁津县| 安新县| 茶陵县| 江源县| 莱芜市| 石嘴山市| 亳州市| 任丘市| 白城市| 东港市| 普陀区| 海城市| 怀仁县| 通榆县| 南陵县| 万安县| 将乐县| 山西省| 元氏县| 泸定县| 永兴县| 定南县| 准格尔旗| 读书| 绿春县| 漳平市| 庄河市| 马关县| 靖江市| 江油市| 阳曲县| 高唐县| 马龙县|