go-sdk/example/serving/grpc/main.go

68 lines
1.6 KiB
Go

package main
import (
"context"
"errors"
"log"
daprd "github.com/dapr/go-sdk/service/grpc"
)
func main() {
// create a Dapr service server
s, err := daprd.NewService(":50001")
if err != nil {
log.Fatalf("failed to start the server: %v", err)
}
// add some topic subscriptions
err = s.AddTopicEventHandler("messages", "demo", eventHandler)
if err != nil {
log.Fatalf("error adding topic subscription: %v", err)
}
// add a service to service invocation handler
err = s.AddServiceInvocationHandler("echo", echoHandler)
if err != nil {
log.Fatalf("error adding invocation handler: %v", err)
}
// add a binding invocation handler
err = s.AddBindingInvocationHandler("run", runHandler)
if err != nil {
log.Fatalf("error adding binding handler: %v", err)
}
// start the server
if err := s.Start(); err != nil {
log.Fatalf("server error: %v", err)
}
}
func eventHandler(ctx context.Context, e *daprd.TopicEvent) error {
log.Printf("event - PubsubName:%s, Topic:%s, ID:%s, Data: %v", e.PubsubName, e.Topic, e.ID, e.Data)
return nil
}
func echoHandler(ctx context.Context, in *daprd.InvocationEvent) (out *daprd.Content, err error) {
if in == nil {
err = errors.New("nil invocation parameter")
return
}
log.Printf(
"echo - ContentType:%s, Verb:%s, QueryString:%s, %+v",
in.ContentType, in.Verb, in.QueryString, string(in.Data),
)
out = &daprd.Content{
Data: in.Data,
ContentType: in.ContentType,
DataTypeURL: in.DataTypeURL,
}
return
}
func runHandler(ctx context.Context, in *daprd.BindingEvent) (out []byte, err error) {
log.Printf("binding - Data:%v, Meta:%v", in.Data, in.Metadata)
return nil, nil
}