Как преобразовать байтовое сообщение из amqp_basic_get в строку, используя библиотеку rabbitmq- c - PullRequest
0 голосов
/ 11 марта 2020

Как я новичок в rabbitmq- c. Я пытался получить строковое сообщение от amqp_basic_get (). Так как я получаю буфер в байтах. Как я могу получить строку из этого .?

        do {
              rpc_r = amqp_basic_get(conn, 1, amqp_cstring_bytes("queuename"),/* no_ack*/ 1);
        } while (rpc_r.reply_type == AMQP_RESPONSE_NORMAL &&
           rpc_r.reply.id == AMQP_BASIC_GET_EMPTY_METHOD &&
           amqp_time_has_past(deadline) == AMQP_STATUS_OK);

        assert(rpc_r.reply_type == AMQP_RESPONSE_NORMAL);
        assert(rpc_r.reply.id == AMQP_BASIC_GET_OK_METHOD);

        amqp_message_t message;
        rpc_r = amqp_read_message(conn, 1, &message, 0);
        assert(rpc_r.reply_type == AMQP_RESPONSE_NORMAL);

        amqp_bytes_t message_request = amqp_bytes_malloc(message.body.len);
        assert(message_request.bytes != NULL);
        memcpy(message_request.bytes, message.body.bytes, message.body.len);

        char *str = malloc((message.body.len)+1);

        memcpy(str,message.body.bytes,message.body.len);
        printf("%s\n",message.body.bytes);

, и даже я попробовал ниже код и возвращает (ноль) .

        snprintf(str,message.body.len,(char *)message.body.bytes,message.body.len);
        printf("%s\n",str);

Как на самом деле я могу получить содержимое тела сообщения от amqp_basic_get?

...