用c++写一个rabbitmq订阅者代码
时间: 2023-03-07 19:19:49 浏览: 132
C# RabbitMQ 主题订阅的源码
5星 · 资源好评率100%
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <amqp.h>
#include <amqp_tcp_socket.h>int main(int argc, char const * const * argv)
{
amqp_socket_t *socket = NULL;
amqp_connection_state_t conn;
amqp_bytes_t queuename; conn = amqp_new_connection(); socket = amqp_tcp_socket_new(conn);
if (!socket) {
return -1;
} int status = amqp_socket_open(socket, "127.0.0.1", 5672);
if (status) {
return -1;
} amqp_login(conn, "/", 0, 131072, 0, AMQP_SASL_METHOD_PLAIN, "guest", "guest");
amqp_channel_open(conn, 1);
amqp_get_rpc_reply(conn); queuename = amqp_cstring_bytes("test_queue");
amqp_queue_declare(conn, 1, queuename, 0, 0, 0, 0, amqp_empty_table);
amqp_get_rpc_reply(conn); amqp_basic_consume(conn, 1, queuename, amqp_empty_bytes, 0, 1, 0, amqp_empty_table);
amqp_get_rpc_reply(conn); while (1) {
amqp_rpc_reply_t res;
amqp_envelope_t envelope; amqp_maybe_release_buffers(conn); res = amqp_consume_message(conn, &envelope, NULL, 0); if (AMQP_RESPONSE_NORMAL != res.reply_type) {
break;
} printf("Delivery %u, exchange %.*s routingkey %.*s\n",
(unsigned) envelope.delivery_tag,
(int) envelope.exchange.len, (char *) envelope.exchange.bytes,
(int) envelope.routing_key.len, (char *) envelope.routing_key.bytes); if (envelope.message.properties._flags & AMQP_BASIC_CONTENT_TYPE_FLAG) {
printf("Content-type: %.*s\n",
(int) envelope.message.properties.content_type.len,
(char *) envelope.message.properties.content_type.bytes);
}
printf("----\n"); amqp_dump(envelope.message.body.bytes, envelope.message.body.len); 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;
}我能够给你提供一段关于如何使用C语言编写RabbitMQ订阅者代码的示例代码:
阅读全文