我使用的是rabbitmq-c库
时间: 2023-10-28 19:05:12 浏览: 188
RabbitMQ-C是一个用于C语言的AMQP客户端库,它提供了一个API,可以让C程序连接到RabbitMQ代理服务器,并通过AMQP协议进行通信。使用RabbitMQ-C,你可以编写C语言程序来发布和消费消息,以及管理RabbitMQ代理服务器上的队列、交换机、绑定和其他实体。它是一个开源项目,可以在GitHub上找到它的源代码和文档。如果你想在C语言中使用RabbitMQ,那么RabbitMQ-C是一个非常好的选择。
相关问题
我使用的是rabbitmq-c库,在c++中创建一个消费者去持续监听model_1队列
好的,你可以参考以下代码来创建一个消费者去持续监听model_1队列:
```c++
#include <amqp.h>
#include <amqp_framing.h>
#include <amqp_tcp_socket.h>
int main(int argc, char const *const *const argv) {
amqp_connection_state_t conn = amqp_new_connection();
amqp_socket_t *socket = amqp_tcp_socket_new(conn);
amqp_socket_open(socket, "localhost", 5672);
amqp_login(conn, "/", 0, 131072, 0, AMQP_SASL_METHOD_PLAIN, "guest", "guest");
amqp_channel_open(conn, 1);
amqp_queue_declare_ok_t *r = amqp_queue_declare(
conn, 1, amqp_cstring_bytes("model_1"), 0, 0, 0, 1, amqp_empty_table);
amqp_bytes_t consumer_tag = amqp_cstring_bytes("my_consumer");
amqp_basic_consume(conn, 1, amqp_cstring_bytes("model_1"), consumer_tag, 0, 1, 0,
amqp_empty_table);
while (1) {
amqp_envelope_t envelope;
amqp_maybe_release_buffers(conn);
int result = amqp_consume_message(conn, &envelope, NULL, 0);
if (AMQP_RESPONSE_NORMAL != result) {
continue;
}
std::string message((char *)envelope.message.body.bytes,
(char *)envelope.message.body.bytes + envelope.message.body.len);
std::cout << "Received message: " << message << std::endl;
amqp_destroy_envelope(&envelope);
}
amqp_channel_close(conn, 1, AMQP_REPLY_SUCCESS);
amqp_connection_close(conn, AMQP_REPLY_SUCCESS);
amqp_destroy_connection(conn);
return 0;
}
```
这段代码使用了rabbitmq-c库,首先创建了一个连接和一个TCP socket,然后登录到RabbitMQ服务器,打开一个channel并且声明一个名为model_1的队列。接着,我们使用amqp_basic_consume方法来启动消费者,它会一直阻塞并等待新的消息到来。当消息到来时,我们可以使用amqp_envelope_t结构体来访问消息的内容。在这里,我们简单地打印出收到的消息内容,并且释放envelope来释放内存。最后,我们关闭channel和连接并销毁它们。
希望这个例子对你有帮助!
rabbitmq-c-0.13
RabbitMQ-C是一个用于与RabbitMQ消息代理进行通信的C语言客户端库。它提供了发送和接收消息的功能,以及管理队列、交换机和绑定等基本操作。RabbitMQ-C库使用AMQP协议与RabbitMQ进行通信,并通过简单而直观的API提供了方便的消息传递机制。你可以通过在C项目中使用RabbitMQ-C库来与RabbitMQ进行异步、可靠的消息传递。
阅读全文