mirror of https://github.com/dapr/go-sdk.git
68 lines
1.6 KiB
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
|
|
}
|