表更改后立即使用 gRPC 传输数据库数据

2024年 2月 5日 79.0k 0

表更改后立即使用 grpc 传输数据库数据

问题内容

我正在使用 go、grpc 和 postgres 制作任务列表。

如何在调用 postitem 插入新数据时自动流式传输数据?我需要订阅 postgres 还是可以在不订阅或发布订阅的情况下完成此操作?

// protobuf 架构

syntax = "proto3";

package tasklist;

import "google/protobuf/empty.proto";

service todolist {
rpc gettasks(google.protobuf.empty) returns (stream gettasksresponse) {}
rpc postitem(postitemrequest) returns (posttaskrequest) {}
}

message task {
int64 id = 1;
string name = 2;
}

message gettasksresponse {
task task = 1;
}

message posttaskrequest {
task task = 1;
}

message postitemresponse {
bool result = 1;
}

登录后复制

// postgres 表架构

create table task (
id integer not null primary key,
name varchar(10) not null
);

登录后复制

// 继续

func (s *server) GetTasks(_ *empty.Empty, stream pb.TaskList_GetTasksServer) error {
// How can I steam data as soon as `PostTask` is called to update db? 登录后复制

正确答案

我猜 s.requests 类似于 chan task。因此,在成功 // update postgres here 之后,您可以在 chan 中发送您的请求。

func (s *server) PostTask(ctx context.Context, r *pb.PostTaskRequest) (*pb.PostTaskResponse, error) {
postTask := toDomain(r)
err := s.service.UpdateTask(ctx, postTask)
if err != nil {
return nil, status.Error(codes.Internal, err.Error())
}
s.requests 登录后复制

以上就是表更改后立即使用 gRPC 传输数据库数据的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论