rabbitmq的接口函数说明,api参数使用说明
rabbitmq的提供的各个接口函数使用说明,函数有 1、amqp_new_connection(声明一个新的connection) 2、amqp_open_socket(获取socket) 3、amqp_set_sockfd(将connection和sockfd进行绑定) 4、amqp_login(用于登录RabbitMQ server,主要目的为了进行权限管理) 5、amqp_channel_open(用于关联conn和channel) 6、amqp_exchange_declare(声明exchange) 7、amqp_queue_declare(声明queue) 8、amqp_queue_bind(声明binding,已经有的绑定直接返回,没有绑定的就会绑定) 9、amqp_basic_qos(控制预取消息数) 10、amqp_basic_consume(指定要接收的队列) 11、amqp_consume_message(接收数据) 12、int amqp_basic_ack(发送ask确认) 13、amqp_basic_reject(拒绝ask) 14、amqp_basic_publish(发布消息) 15、amqp_simple_wait_frame(回调等待服务器的结果返回) 16、amqp_basic_get(客户端主动获取服务器的下一条消息) 17、关闭 18、AE交换机的使用 19、死信交换机的使用 ### RabbitMQ C API 接口函数说明 #### 1. amqp_new_connection(声明一个新的connection) **声明**:`amqp_connection_state_t amqp_new_connection(void);` 此函数用于创建一个新的RabbitMQ连接状态对象。它初始化了一个新的连接状态,并准备进行后续的连接操作。 #### 2. amqp_open_socket(获取socket) **声明**:`int amqp_open_socket(char const *hostname, int portnumber);` **参数说明**: - `hostname`: RabbitMQ server所在的主机名。 - `portnumber`: RabbitMQ server监听的端口号,默认为5672。 该函数用于打开到RabbitMQ服务器的socket连接。通过提供主机名和端口号,此函数尝试建立一个网络连接。 #### 3. amqp_set_sockfd(将connection和sockfd进行绑定) **声明**:`void amqp_set_sockfd(amqp_connection_state_t state, int sockfd);` 此函数将一个已存在的socket描述符与RabbitMQ连接状态绑定起来。这对于使用非默认方式建立的socket连接非常有用。 #### 4. amqp_login(用于登录RabbitMQ server,主要目的为了进行权限管理) **声明**:`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, ...);` **参数说明**: - `state`: 当前的RabbitMQ连接状态。 - `vhost`: RabbitMQ的虚拟主机名称,这是权限管理的最小单位。 - `channel_max`: 最大链接数。通常设为0,让服务器决定。 - `frame_max`: 与客户端通信时所允许的最大帧大小。默认值为131072字节。增加这个值可以提高吞吐量,但可能会增加延迟。 - `heartbeat`: 客户端发送心跳的时间间隔。如果不设置,则RabbitMQ服务器默认每60秒检查一次连接。 - `sasl_method`: 鉴权方法,如AMQP_SASL_METHOD_PLAIN表示使用基本认证。 示例调用: ```c amqp_login(conn, "/", 0, 131072, 0, AMQP_SASL_METHOD_PLAIN, "admin", "admin"); ``` #### 5. amqp_channel_open(用于关联conn和channel) **声明**:`amqp_channel_open_ok_t* amqp_channel_open(amqp_connection_state_t state, amqp_channel_t channel);` 此函数用于打开一个新的通道(channel)。通道是在连接上创建的轻量级对象,它们允许多个逻辑连接共享同一个网络连接。 **接口说明**:如果已经打开的channel再次尝试打开,将会返回错误。 #### 6. amqp_exchange_declare(声明exchange) **声明**:`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_boolean_t auto_delete, amqp_boolean_t internal, amqp_table_t arguments);` **参数说明**: - `state`: 当前的RabbitMQ连接状态。 - `channel`: 要在哪个通道上声明交换机。 - `exchange`: 交换机的名称。 - `type`: 交换机类型,可以是"fanout"、"direct"或"topic"。 - `passive`: 如果设置为true,则仅检查交换机是否存在,而不创建新的。如果设置为false,则会在不存在时创建交换机。 - `durable`: 如果设置为true,则交换机是持久化的。 - `auto_delete`: 如果设置为true,则当所有绑定的队列不再使用时,交换机会被自动删除。 - `internal`: 如果设置为true,则交换机只能由其他交换机绑定,不能直接由生产者使用。 - `arguments`: 扩展参数表,用于传递额外配置选项。 **拓展参数**: 1. **alternate-exchange**: 绑定备用交换机(AE),当消息无法路由到任何队列时,将被转发到备用交换机。 #### 7. amqp_queue_declare(声明queue) **声明**:`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);` **参数说明**: - `state`: 当前的RabbitMQ连接状态。 - `channel`: 要在哪个通道上声明队列。 - `queue`: 队列的名称。 - `passive`: 如果设置为true,则仅检查队列是否存在,而不创建新的。如果设置为false,则会在不存在时创建队列。 - `durable`: 如果设置为true,则队列是持久化的。 - `exclusive`: 如果设置为true,则队列只对创建它的连接可见,并且当连接关闭时队列会被自动删除。 - `auto_delete`: 如果设置为true,则当最后一个消费者取消订阅时,队列会被自动删除。 - `arguments`: 扩展参数表,用于传递额外配置选项。 接下来,我们继续分析剩余的功能: #### 8. amqp_queue_bind(声明binding) **声明**:`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_table_t arguments);` 此函数用于将一个队列与交换机绑定。如果已经存在这样的绑定,则直接返回;如果没有,则创建新的绑定。 **参数说明**: - `state`: 当前的RabbitMQ连接状态。 - `channel`: 要在哪个通道上执行绑定操作。 - `queue`: 要绑定的队列名称。 - `exchange`: 要绑定的交换机名称。 - `routing_key`: 路由键,用于确定消息如何从交换机路由到队列。 - `arguments`: 扩展参数表,用于传递额外配置选项。 #### 9. amqp_basic_qos(控制预取消息数) **声明**:`amqp_basic_qos_ok_t* amqp_basic_qos(amqp_connection_state_t state, amqp_channel_t channel, unsigned int prefetch_count, unsigned int prefetch_size, amqp_boolean_t global);` 此函数用于设置消费者预取策略。它定义了消费者在处理完当前消息之前可以从队列中预取的消息数量。 **参数说明**: - `state`: 当前的RabbitMQ连接状态。 - `channel`: 要在哪个通道上设置预取策略。 - `prefetch_count`: 消费者可以预取的消息数量。 - `prefetch_size`: 消费者可以预取的消息大小,通常设为0,表示只按数量预取。 - `global`: 如果设置为true,则应用到该通道上的所有消费者。 #### 10. amqp_basic_consume(指定要接收的队列) **声明**:`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);` 此函数用于创建一个消费者,并指定要接收消息的队列。 **参数说明**: - `state`: 当前的RabbitMQ连接状态。 - `channel`: 要在哪个通道上创建消费者。 - `queue`: 指定要接收消息的队列名称。 - `consumer_tag`: 消费者的唯一标识符。 - `no_local`: 如果设置为true,则不会向生产者自身发送消息。 - `no_ack`: 如果设置为true,则消费者收到消息后不会发送确认消息。 - `exclusive`: 如果设置为true,则只有创建该消费者的连接可以消费该队列中的消息。 - `arguments`: 扩展参数表,用于传递额外配置选项。 #### 11. amqp_consume_message(接收数据) **声明**:`amqp_basic_deliver_t* amqp_consume_message(amqp_connection_state_t state, amqp_channel_t channel, amqp_envelope_t* envelope, amqp_boolean_t multiple, amqp_time_t timeout);` 此函数用于从队列中接收消息。 **参数说明**: - `state`: 当前的RabbitMQ连接状态。 - `channel`: 要在哪个通道上接收消息。 - `envelope`: 用来存储接收到的消息的结构体。 - `multiple`: 如果设置为true,则接收多条消息。 - `timeout`: 操作的超时时间,以毫秒为单位。 #### 12. amqp_basic_ack(发送ack确认) **声明**:`amqp_basic_ack(amqp_connection_state_t state, amqp_channel_t channel, unsigned long long delivery_tag, amqp_boolean_t multiple);` 此函数用于确认消息已成功接收并处理。 **参数说明**: - `state`: 当前的RabbitMQ连接状态。 - `channel`: 要在哪个通道上发送确认。 - `delivery_tag`: 要确认的消息的交付标签。 - `multiple`: 如果设置为true,则确认交付标签及之前的所有消息。 #### 13. amqp_basic_reject(拒绝ask) **声明**:`amqp_basic_reject(amqp_connection_state_t state, amqp_channel_t channel, unsigned long long delivery_tag, amqp_boolean_t requeue);` 此函数用于拒绝接收消息,并可以选择重新排队。 **参数说明**: - `state`: 当前的RabbitMQ连接状态。 - `channel`: 要在哪个通道上拒绝消息。 - `delivery_tag`: 要拒绝的消息的交付标签。 - `requeue`: 如果设置为true,则将消息重新排队。 #### 14. amqp_basic_publish(发布消息) **声明**:`amqp_basic_return_t* 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, amqp_properties_t properties, amqp_bytes_t body);` 此函数用于发布消息到交换机。 **参数说明**: - `state`: 当前的RabbitMQ连接状态。 - `channel`: 要在哪个通道上发布消息。 - `exchange`: 要发布的交换机名称。 - `routing_key`: 路由键,用于确定消息如何从交换机路由到队列。 - `mandatory`: 如果设置为true,则当消息无法路由时,会发送basic.return响应。 - `immediate`: 如果设置为true,则消息只会发送到有即时消费者绑定的队列。 - `properties`: 消息属性,例如消息的优先级、持久性等。 - `body`: 消息的实际内容。 #### 15. amqp_simple_wait_frame(回调等待服务器的结果返回) **声明**:`amqp_simple_wait_frame(amqp_connection_state_t state);` 此函数用于等待服务器的响应帧。它通常用于等待RPC响应。 #### 16. amqp_basic_get(客户端主动获取服务器的下一条消息) **声明**:`amqp_basic_get_ok_t* amqp_basic_get(amqp_connection_state_t state, amqp_channel_t channel, amqp_bytes_t queue, amqp_boolean_t no_ack);` 此函数用于从队列中主动获取消息。 **参数说明**: - `state`: 当前的RabbitMQ连接状态。 - `channel`: 要在哪个通道上获取消息。 - `queue`: 指定要获取消息的队列名称。 - `no_ack`: 如果设置为true,则不需要确认消息。 #### 17. 关闭 **声明**:`void amqp_close_connection(amqp_connection_state_t state, int reply_code, char const *reply_text);` 此函数用于关闭连接。 **参数说明**: - `state`: 当前的RabbitMQ连接状态。 - `reply_code`: 关闭连接的回复代码。 - `reply_text`: 关闭连接的回复文本。 #### 18. AE交换机的使用 AE交换机即备用交换机(Alternate Exchange),当消息无法路由到任何队列时,可以通过备用交换机处理这些消息。在`amqp_exchange_declare`中通过`arguments`参数设置备用交换机。 #### 19. 死信交换机的使用 死信交换机用于处理那些由于某种原因无法到达最终队列的消息。这些消息可以被重新路由到死信交换机中,并进一步处理。 以上就是RabbitMQ C API中关于接口函数的相关说明,这些函数覆盖了与RabbitMQ交互的基本功能,包括连接管理、队列和交换机的声明、消息发布和消费等核心操作。通过合理使用这些API,可以高效地构建基于RabbitMQ的应用程序。
剩余10页未读,继续阅读
- joenhon2018-07-03对于新手有用,虽然我也是新手,但我是抱着提高发送消息效率来的,结果。。。还是大众资料,不足5积分https://www.cnblogs.com/yorkyang/p/6294049.html
- 粉丝: 0
- 资源: 8
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 积木形状检测14-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- STM32F103RC-W5500实现设备发送ARP请求.zip
- STM32F103RC-W5500实现使用单片机中断方式处理TCP发来的数据.zip
- STM32F103RC-W5500实现网络发送唤醒包唤醒休眠状态的单片机.zip
- STM32F103RC-W5500实现以太网MQTT协议连接中移oneNET物联网平台.zip
- STM32F103RC-W5500实现自动Ping指定IP设备.zip
- 毕设和企业适用springboot企业安全管理系统类及企业数字资产管理平台源码+论文+视频.zip
- STM32F103RC-W5500以太网配置设备端为TCP Client客户端.zip
- STM32F103RC-W5500以太网配置设备端为TCP Server服务端.zip
- STM32F103RC单片机-W5500以太网配置网络初始化.zip
- 毕设和企业适用springboot企业安全管理系统类及企业资源规划平台源码+论文+视频.zip
- 蓝色商务类型PPT资源
- 积木检测10-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- BluePrint-Base-RS.zip
- python作业.zip
- Unity与C++插件开发:实现在Unity中调用C++函数