RabbitMQ第六課 例子說明

RabbitMQ Web管理端口是15672服務器


RabbitMQ example例子中默認鏈接端口是5672。
第一次啓動example,測試鏈接服務器,端口填寫錯誤,鏈接失敗,返回 connection closed unexpectedlysocket

die_on_amqp_error(amqp_login(conn, "/", 0, 131072, 0, AMQP_SASL_METHOD_PLAIN,"guest", "guest")
使用用戶名guest ,密碼guest。登錄出現以下的錯誤:User can only log in via localhost
默認狀況下guest是沒法發送數據的,必須進行修改ide


amqp_consumer和amqp_producer例子中並無指定交換機的類型,說明當前交換機的建立權力交給其餘的建立者在這裏,並無並無指定隊列名稱,而是經過指定routing_key,來關聯相應的隊列名。匹配的方式根據交換機的類型來肯定函數

amqp_consume_message函數執行的返回值保存在amqp_rpc_reply_t ret;測試

/**
 * Response type
 *
 * \since v0.1
 */orm

typedef enum amqp_response_type_enum_
{
  AMQP_RESPONSE_NONE = 0, /**< the library got an EOF from the socket */
 
AMQP_RESPONSE_NORMAL, /**< response normal, the RPC completed successfully */
 
AMQP_RESPONSE_LIBRARY_EXCEPTION, /**< library error, an error occurred in the
  library, examine the library_error */
 
AMQP_RESPONSE_SERVER_EXCEPTION   /**< server exception, the broker returned an
  error, check replay */
} amqp_response_type_enum;
默認狀況下ret.reply_type等於AMQP_RESPONSE_NORMAL說明回覆正常,RPC正確執行。AMQP_RESPONSE_LIBRARY_EXCEPTION說明在函數
調用過程當中返回結果異常(並非說編譯的庫出現問題,而是在跟服務器通訊的時候,遇到其餘的異常,例如接收超時,例如鏈接斷開等等)server

例如,當接收超時的時候ret.library_error的返回值是-13,操做超時
  AMQP_STATUS_TIMEOUT = -0x000D,                    /**< Operation timed out */隊列

 AMQP_STATUS_SOCKET_ERROR = -0x0009,               /**< A socket error
 occurred */
當跟服務器斷開鏈接的時候,會返回-9錯誤碼,在例子中並無處理這種異常狀況,實際上須要進行重連rpc

相關文章
相關標籤/搜索