RabbitMQ C API詳細說明

2021-10-12 04:12:51 字數 4146 閱讀 5663

rabbitmq-c是乙個用於c語言的,與amqp server進行互動的client庫,amqp協議為版本0-9-1。rabbitmq-c與server進行互動前需要首先進行login操作,在操作後,可以根據amqp協議規範,執行一系列操作。

介面描述:

amqp_connection_state_t amqp_new_connection(void);

介面說明:宣告乙個新的amqp connection
int amqp_open_socket(char const *hostname, int portnumber);

介面說明:獲取socket.

引數說明:hostname rabbitmq server所在主機

portnumber rabbitmq server監聽埠

void amqp_set_sockfd(amqp_connection_state_t state,int sockfd);

介面說明:將amqp connection和sockfd進行繫結
amqp_rpc_reply_t amqp_login(amqp_connection_state_t state, char const *vhost,int channel_max,int frame_max,int heartbeat,amqp_sasl_method_enum sasl_method, …);

介面說明:用於登入rabbitmq server,主要目的為了進行許可權管理;

引數說明:state amqp connection

vhost rabbit-mq的虛機主機,是rabbit-mq進行許可權管理的最小單位

channel_max 最大鏈結數,此處設成0即可

frame_max 和客戶端通訊時所允許的最大的frame size.預設值為131072,增大這個值有助於提高吞吐,降低這個值有利於降低時延

heartbeat 含義未知,預設值填0

sasl_method 用於ssl鑑權,預設值參考後文demo

amqp_channel_open_ok_t *amqp_channel_open(amqp_connection_state_t state, amqp_channel_t channel);

介面說明:用於關聯conn和channel
amqp_exchange_declare_ok_t *amqp_exchange_declare(amqp_connection_state_t state, amqp_channel_t channel, amqp_bytes_t exchange, amqp_bytes_t type, amqp_boolean_t passive, amqp_boolean_t durable, amqp_table_t arguments);

介面說明:宣告declare

引數說明:state

channel

exchange

type "fanout" "direct" "topic"三選一

passive

curable

arguments

amqp_queue_declare_ok_t *amqp_queue_declare(amqp_connection_state_t state, amqp_channel_t channel, amqp_bytes_t queue, amqp_boolean_t passive, amqp_boolean_t durable, amqp_boolean_t exclusive, amqp_boolean_t auto_delete, amqp_table_t arguments);

介面說明:宣告queue

引數說明:state amqp connection

channel

queue queue name

passive

durable 佇列是否持久化

exclusive 當前連線不在時,佇列是否自動刪除

aoto_delete 沒有consumer時,佇列是否自動刪除

arguments 用於拓展引數,比如x-ha-policy用於mirrored queue

amqp_queue_bind_ok_t *amqp_queue_bind(amqp_connection_state_t state, amqp_channel_t channel, amqp_bytes_t queue, amqp_bytes_t exchange, amqp_bytes_t routing_key, amqp_tab le_t arguments);

介面說明:宣告binding
amqp_basic_qos_ok_t *amqp_basic_qos(amqp_connection_state_t state, amqp_channel_t channel, uint32_t prefetch_size, uint16_t prefetch_count, amqp_boolean_t global);

介面說明:qos是 quality of service,我們這裡使用主要用於控制預取訊息數,避免訊息按條數均勻分配,需要和no_ack配合使用

引數說明:state

channel

prefetch_size 以bytes為單位,0為unlimited

prefetch_count 預取的訊息條數

global

amqp_basic_consume_ok_t *amqp_basic_consume(amqp_connection_state_t state, amqp_channel_t channel, amqp_bytes_t queue, amqp_bytes_t consumer_tag, amqp_boolean_t no_local, amqp_boolean_t no_ack, amqp_boolean_t exclusive, amqp_table_t arguments);

介面說明:開始乙個queue consumer

引數說明:state

channel

queue

consumer_tag

no_local

no_ack 是否需要確認訊息後再從佇列中刪除訊息

exclusive

arguments

int amqp_basic_ack(amqp_connection_state_t state,amqp_channel_t channel,uint64_t delivery_tag,amqp_boolean_t multiple);

int amqp_basic_publish(amqp_connection_state_t state,amqp_channel_t channel,amqp_bytes_t exchange,amqp_bytes_t routing_key,amqp_boolean_t mandatory,amqp_boolean_t immediate,struct amqp_basic_properties_t_ const *properties,amqp_bytes_t body);

介面說明:發布訊息

引數說明:state

channel

exchange

routing_key 當exchange為預設「」時,此處填寫queue_name,當exchange為direct,此處為binding_key

mandatory 參見參考文獻2

immediate 同上

properties 更多屬性,如何設定訊息持久化,參見文後demo

body 訊息體

amqp_rpc_reply_t amqp_channel_close(amqp_connection_state_t state,amqp_channel_t channel,int code);

amqp_rpc_reply_t amqp_connection_close(amqp_connection_state_t state,int code);

int amqp_destroy_connection(amqp_connection_state_t state);

Struts config xml 詳細說明

頁面中表單對應的bean儲存表單資料,驗證 type hello.helloform formbean 對應的包名.類名 路徑的邏輯名,此項必須有 path action1.do 指向 或重定向的uri.此項是必需的,必須以 開頭.請求訪問action的路徑,必須以 開頭 type hello.he...

Struts config xml 詳細說明

頁面中表單對應的bean儲存表單資料,驗證 type hello.helloform formbean 對應的包名.類名 name forward1 路徑的邏輯名,此項必須有 path action1.do 指向 或重定向的uri.此項是必需的,必須以 開頭.name forward2 path a...

Linux free m 詳細說明

linux記憶體中buffer與cache的區別 free 命令相對於top 提供了更簡潔的檢視系統記憶體使用情況 free total used free shared buffers cached mem 255268 238332 16936 0 85540 126384 buffers ca...