日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RabbitMQ服务客户端的的业务逻辑

發布時間:2024/2/28 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RabbitMQ服务客户端的的业务逻辑 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
RabbitMQ服務客戶端的的業務邏輯如下:

????1,打開 socket:
???? amqp_new_connection();
???? amqp_open_socket(hostname, port);
?????
????2,用戶登陸:

????amqp_set_sockfd(conn, sockfd);
????amqp_login(conn, "/", 0, 131072, 0, AMQP_SASL_METHOD_PLAIN, userName, password);

????3,打開channel
????amqp_channel_open(conn, 1);
????amqp_get_rpc_reply(conn);

????4,聲明 Exchange

????amqp_exchange_declare(conn, 1, amqp_cstring_bytes(exchange), amqp_cstring_bytes("fanout"),
??????????????????????????0, 0, amqp_empty_table);

????5,聲明Queue
????amqp_queue_declare_ok_t *r = amqp_queue_declare(conn, 1, amqp_cstring_bytes(queue), 0, 0, 0, 1,amqp_empty_table);


????6,將Queue和Exchange進行binding

????amqp_queue_bind(conn, 1,
????????????????????queuename,
????????????????????amqp_cstring_bytes(exchange),
????????????????????amqp_cstring_bytes(bindingkey),
????????????????????amqp_empty_table);

????注意:binding動作在程序中只能執行一次,如果第二次再執行,程序會crash!
????

????7,操作,包括 發送(publish),接收(consume)等。

????????發送:

????????????amqp_basic_publish(conn,
?????????????????????????? 1,
?????????????????????????? amqp_cstring_bytes(exchange),
?????????????????????????? amqp_cstring_bytes(routingkey),
?????????????????????????? 0,
?????????????????????????? 0,
?????????????????????????? NULL,
?????????????????????????? amqp_cstring_bytes(messagebody));


????????接收:
????????????amqp_basic_consume(conn, 1,queuename, amqp_empty_bytes, 0, 1, 0, amqp_empty_table);

???????? amqp_maybe_release_buffers(conn);

????此處應該注意:接受的過程是一個阻塞的異步過程,所以必須在子線程中進行操作,這樣就不會影響主線程中的UI操作,所以在以前使用的block編程就用了很大的用武之地,一方面,通過block多核編程提高程序的運行效率,第二方面,異步的dispatch能夠完美的解決阻塞的問題,并且可以使處理后返回的數據直接在OC類中直接使用,從而規避了在C函數中傳遞OC的指針來對OC的對象進行的操作,真是一勞永逸的好方法,推薦大家使用。

????8,進行unbinding

?????????? amqp_queue_unbind(conn, 1,
??????????????????????queuename,
??????????????????????amqp_cstring_bytes(exchange),
??????????????????????amqp_cstring_bytes(bindingkey),
??????????????????????amqp_empty_table);

????9,關閉channel
????????
????????????amqp_channel_close(conn, 1, AMQP_REPLY_SUCCESS);


????10,關閉 connection連接。

????// Closing connection
????amqp_connection_close(conn, AMQP_REPLY_SUCCESS);
????
????//Ending connection
????amqp_destroy_connection(conn);

總結

以上是生活随笔為你收集整理的RabbitMQ服务客户端的的业务逻辑的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。