use “go mod tidy” to obtain necesary dependencies
in secondwork folder, “go run server.go” to start the server
in secondwork folder, “go run client.go” to start the client
2022/11/19 04:03:11 ———————Test Publish————————
2022/11/19 04:03:11 3 messages will be published to testTopic1
2022/11/19 04:03:11 msgId=0 has been published
2022/11/19 04:03:11 msgId=1 has been published
2022/11/19 04:03:11 msgId=2 has been published
2022/11/19 04:03:11 ———————Test Pull—————————
2022/11/19 04:03:11 subscription projects/1/subscriptions/sub1 pull messages succ
2022/11/19 04:03:11 AckId = ack0 has been pulled
2022/11/19 04:03:11 AckId = ack1 has been pulled
2022/11/19 04:03:11 AckId = ack2 has been pulled
2022/11/19 04:03:11 ———————Test Acknowledge——————–
2022/11/19 04:03:11 make subscription %s acknowledge ack0 and ack2
2022/11/19 04:03:11 Acknowledge ack0 and ack2 succ
2022/11/19 04:03:11 make subscription projects/1/subscriptions/sub1 pull rest messages
2022/11/19 04:03:11 subscription projects/1/subscriptions/sub1 pull messages succ
2022/11/19 04:03:11 AckId = ack1 has been pulled
作业
基本题目:请基于//google/pubsub/v1/pubsub.proto实现一个Publisher服务,相关数据无需存储到磁盘,采用内存操作模拟即可。请提交相应的实现程序代码以及对应的功能测试代码。
扩展题目:请基于//google/pubsub/v1/pubsub.proto实现一个Subscriber服务,并附带相应的功能测试程序。
运行说明
use “go mod tidy” to obtain necesary dependencies in secondwork folder, “go run server.go” to start the server in secondwork folder, “go run client.go” to start the client
作业说明
已完成
TO DO
运行结果
Server Side
2022/11/19 04:03:06 listener create succ 2022/11/19 04:03:11 CreateTopic request received 2022/11/19 04:03:11 CreateTopic request succ 2022/11/19 04:03:11 CreateTopic request received 2022/11/19 04:03:11 CreateTopic request succ 2022/11/19 04:03:11 CreateTopic request received 2022/11/19 04:03:11 CreateTopic request succ 2022/11/19 04:03:11 CreateTopic request received 2022/11/19 04:03:11 CreateTopic request succ 2022/11/19 04:03:11 CreateTopic request received 2022/11/19 04:03:11 CreateTopic request succ 2022/11/19 04:03:11 CreateTopic request received 2022/11/19 04:03:11 CreateTopic request succ 2022/11/19 04:03:11 ListTopics request received 2022/11/19 04:03:11 ListTopics request succ 2022/11/19 04:03:11 DeleteTopic request received 2022/11/19 04:03:11 DeleteTopic request succ 2022/11/19 04:03:11 ListTopics request received 2022/11/19 04:03:11 ListTopics request succ 2022/11/19 04:03:11 UpdateTopic request received 2022/11/19 04:03:11 UpdateTopic request succ 2022/11/19 04:03:11 GetTopic request received 2022/11/19 04:03:11 GetTopic request succ 2022/11/19 04:03:11 CreateSubscription request received 2022/11/19 04:03:11 CreateSubscription request succ 2022/11/19 04:03:11 CreateSubscription request received 2022/11/19 04:03:11 CreateSubscription request succ 2022/11/19 04:03:11 CreateSubscription request received 2022/11/19 04:03:11 CreateSubscription request succ 2022/11/19 04:03:11 CreateSubscription request received 2022/11/19 04:03:11 CreateSubscription request succ 2022/11/19 04:03:11 CreateSubscription request received 2022/11/19 04:03:11 CreateSubscription request succ 2022/11/19 04:03:11 CreateSubscription request received 2022/11/19 04:03:11 CreateSubscription request succ 2022/11/19 04:03:11 ListTopicSubscriptions request received 2022/11/19 04:03:11 ListTopicSubscriptions request succ 2022/11/19 04:03:11 DeleteSubscription request received 2022/11/19 04:03:11 DeleteSubscription request succ 2022/11/19 04:03:11 ListSubscriptions request received 2022/11/19 04:03:11 ListSubscriptions request succ 2022/11/19 04:03:11 ListTopicSubscriptions request received 2022/11/19 04:03:11 ListTopicSubscriptions request succ 2022/11/19 04:03:11 UpdateSubscription request received 2022/11/19 04:03:11 UpdateSubscription request succ 2022/11/19 04:03:11 GetSubscription request received 2022/11/19 04:03:11 GetSubscription request succ 2022/11/19 04:03:11 Publish request received 2022/11/19 04:03:11 Publish request succ 2022/11/19 04:03:11 Pull request received 2022/11/19 04:03:11 Pull request succ 2022/11/19 04:03:11 Acknowledge request received 2022/11/19 04:03:11 Acknowledge request succ 2022/11/19 04:03:11 Pull request received 2022/11/19 04:03:11 Pull request succ
Client Side
2022/11/19 04:03:11 client starts succ
2022/11/19 04:03:11 =====================Test Publisher======================
2022/11/19 04:03:11 ———————Test CreateTopic——————– 2022/11/19 04:03:11 topic projects/1/topics/test1 creation succ 2022/11/19 04:03:11 topic projects/1/topics/test2 creation succ 2022/11/19 04:03:11 topic projects/1/topics/test3 creation succ 2022/11/19 04:03:11 topic projects/2/topics/test4 creation succ 2022/11/19 04:03:11 topic projects/2/topics/test5 creation succ 2022/11/19 04:03:11 topic projects/2/topics/test6 creation succ
2022/11/19 04:03:11 ———————Test ListTopics——————— 2022/11/19 04:03:11 list topics succ 2022/11/19 04:03:11 here are topics belonging to projects/1 2022/11/19 04:03:11 projects/1/topics/test3 2022/11/19 04:03:11 projects/1/topics/test1 2022/11/19 04:03:11 projects/1/topics/test2
2022/11/19 04:03:11 ———————Test DeleteTopic——————– 2022/11/19 04:03:11 Delete projects/1/topics/test2 2022/11/19 04:03:11 list topics succ 2022/11/19 04:03:11 here are topics belonging to projects/1 2022/11/19 04:03:11 projects/1/topics/test1 2022/11/19 04:03:11 projects/1/topics/test3
2022/11/19 04:03:11 ———————Test UpdateTopic——————– 2022/11/19 04:03:11 update labels of projects/1/topics/test1 to [testlabel:1] 2022/11/19 04:03:11 UpdateTopic request succ 2022/11/19 04:03:11 attribute labels of test1 is map[testlabel:1]
2022/11/19 04:03:11 ———————Test GetTopic———————– 2022/11/19 04:03:11 Get Topic test3 succ, test3 = name:”projects/1/topics/test3”
2022/11/19 04:03:11 =====================Test Subscriber=====================
2022/11/19 04:03:11 ———————Test CreateSubscription————- 2022/11/19 04:03:11 add subscription projects/1/subscriptions/sub1 to topic projects/1/topics/test1 succ 2022/11/19 04:03:11 add subscription projects/1/subscriptions/sub2 to topic projects/1/topics/test1 succ 2022/11/19 04:03:11 add subscription projects/1/subscriptions/sub3 to topic projects/1/topics/test1 succ 2022/11/19 04:03:11 add subscription projects/1/subscriptions/sub4 to topic projects/1/topics/test3 succ 2022/11/19 04:03:11 add subscription projects/1/subscriptions/sub5 to topic projects/1/topics/test3 succ 2022/11/19 04:03:11 add subscription projects/1/subscriptions/sub6 to topic projects/1/topics/test3 succ
2022/11/19 04:03:11 ———————Test ListTopicsSubscriptions——– 2022/11/19 04:03:11 Here are subscriptions belonging to topic test1 2022/11/19 04:03:11 projects/1/subscriptions/sub2 2022/11/19 04:03:11 projects/1/subscriptions/sub3 2022/11/19 04:03:11 projects/1/subscriptions/sub1
2022/11/19 04:03:11 ———————Test DeleteSubscription————- 2022/11/19 04:03:11 Delete Subscription projects/1/subscriptions/sub2 succ
2022/11/19 04:03:11 ———————Test ListSubscriptions————– 2022/11/19 04:03:11 ListSubscriptions succ, here are all subscriptions belonging to projects/1 2022/11/19 04:03:11 projects/1/subscriptions/sub1 2022/11/19 04:03:11 projects/1/subscriptions/sub3 2022/11/19 04:03:11 projects/1/subscriptions/sub4 2022/11/19 04:03:11 projects/1/subscriptions/sub5 2022/11/19 04:03:11 projects/1/subscriptions/sub6 2022/11/19 04:03:11 Here are subscriptions belonging to topic test1 2022/11/19 04:03:11 projects/1/subscriptions/sub1 2022/11/19 04:03:11 projects/1/subscriptions/sub3
2022/11/19 04:03:11 ———————Test UpdateSubscription————- 2022/11/19 04:03:11 update subscription projects/1/subscriptions/sub3 labels to [testlabel:2] 2022/11/19 04:03:11 UpdateSubscription request succ 2022/11/19 04:03:11 attribute labels of projects/1/subscriptions/sub3 is map[testlabel:2]
2022/11/19 04:03:11 ———————Test GetSubscription—————- 2022/11/19 04:03:11 Get Topic projects/1/subscriptions/sub3 succ, projects/1/subscriptions/sub3 = name:”projects/1/subscriptions/sub3” topic:”projects/1/topics/test1” labels:{key:”testlabel” value:”2”} state:ACTIVE
2022/11/19 04:03:11 ———————Test Publish———————— 2022/11/19 04:03:11 3 messages will be published to testTopic1 2022/11/19 04:03:11 msgId=0 has been published 2022/11/19 04:03:11 msgId=1 has been published 2022/11/19 04:03:11 msgId=2 has been published
2022/11/19 04:03:11 ———————Test Pull————————— 2022/11/19 04:03:11 subscription projects/1/subscriptions/sub1 pull messages succ 2022/11/19 04:03:11 AckId = ack0 has been pulled 2022/11/19 04:03:11 AckId = ack1 has been pulled 2022/11/19 04:03:11 AckId = ack2 has been pulled
2022/11/19 04:03:11 ———————Test Acknowledge——————– 2022/11/19 04:03:11 make subscription %s acknowledge ack0 and ack2 2022/11/19 04:03:11 Acknowledge ack0 and ack2 succ 2022/11/19 04:03:11 make subscription projects/1/subscriptions/sub1 pull rest messages 2022/11/19 04:03:11 subscription projects/1/subscriptions/sub1 pull messages succ 2022/11/19 04:03:11 AckId = ack1 has been pulled
运行结果截图
server side
client side