ZBLOG

brpc使用demo

以下是一个简单的brpc使用示例:

首先,需要安装并配置好brpc框架。

  1. 创建一个文件名为hello_world.proto的proto文件,内容如下:
syntax = "proto2";

package brpc.demo;

message Request {
    required string name = 1;
}

message Response {
    required string message = 1;
}

service HelloWorld {
    rpc SayHello(Request) returns (Response);
}
  1. 使用protobuf编译器生成C++代码:
protoc -I=. --cpp_out=. hello_world.proto
  1. 编写server.cpp代码:
#include <butil/logging.h>
#include <brpc/server.h>
#include "hello_world.pb.h"

namespace brpc_demo {

class HelloWorldServiceImpl : public brpc::HelloWorld {
public:
    void SayHello(google::protobuf::RpcController* cntl,
                  const brpc::Request* request,
                  brpc::Response* response,
                  google::protobuf::Closure* done) override {
        const std::string& name = request->name();
        response->set_message("Hello, " + name);
        done->Run();
    }
};

} // namespace brpc_demo

int main() {
    // 初始化日志库
    butil::AtExitManager exit_manager;
    if (butil::FLAGS_minloglevel > 0) {
        butil::SetLogLevel(butil::FLAGS_minloglevel - 1);
    }

    // 创建和启动服务器
    brpc::Server server;

    brpc_demo::HelloWorldServiceImpl hello_service_impl;
    
    if (server.AddService(&hello_service_impl,
                         brpc::_SERVICE_NAME(brpc_demo::HelloWorld)) != 0) {
        LOG(ERROR) << "Failed to add HelloWorld service";
        return -1;
    }

    brpc::ServerOptions options;
    if (server.Start(50051, &options) != 0) {
        LOG(ERROR) << "Failed to start server";
        return -1;
    }

    server.RunUntilAskedToQuit();
    
    return 0;
}
  1. 编写client.cpp代码:
#include <butil/logging.h>
#include <brpc/channel.h>
#include "hello_world.pb.h"

int main() {
    // 初始化日志库
    butil::AtExitManager exit_manager;
    if (butil::FLAGS_minloglevel > 0) {
        butil::SetLogLevel(butil::FLAGS_minloglevel - 1);
    }

    // 创建和初始化Channel对象
    brpc::Channel channel;
    
    if (channel.Init("127.0.0.1:50051", nullptr) != 0) {
        LOG(ERROR) << "Fail to initialize channel";
        return -1;
    }
    
     // 定义请求和响应对象
     brpc_demo::Request request;
     brpc_demo::Response response;

     request.set_name("World");

     // 发起RPC调用
     brpc::Controller cntl;

     brpc_demo::HelloWorld_Stub stub(&channel);
     
     stub.SayHello(&cntl, &request, &response, nullptr);

     // 处理响应结果
     if (cntl.Failed()) {
         LOG(ERROR) << "Fail to send RPC";
         return -1;
     } else {
         LOG(INFO) << "Received message: " << response.message();
     }
     
      return 0;  
}
  1. 编译并运行server.cpp和client.cpp。

这个示例展示了如何创建一个简单的HelloWorld服务,server.cpp作为服务端代码,client.cpp作为客户端代码。运行server.cpp启动服务,在客户端发起RPC调用,并打印响应结果。

以上是一个基本的brpc使用示例,你可以根据自己的需求进行进一步开发和扩展。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=18181

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?