mirror of https://github.com/dapr/go-sdk.git
83 lines
2.3 KiB
Go
83 lines
2.3 KiB
Go
/*
|
|
Copyright 2021 The Dapr Authors
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
package main
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"log"
|
|
|
|
"github.com/dapr/go-sdk/service/common"
|
|
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
|
|
sub := &common.Subscription{
|
|
PubsubName: "messages",
|
|
Topic: "topic1",
|
|
}
|
|
if err := s.AddTopicEventHandler(sub, eventHandler); err != nil {
|
|
log.Fatalf("error adding topic subscription: %v", err)
|
|
}
|
|
|
|
// add a service to service invocation handler
|
|
if err := s.AddServiceInvocationHandler("echo", echoHandler); err != nil {
|
|
log.Fatalf("error adding invocation handler: %v", err)
|
|
}
|
|
|
|
// add a binding invocation handler
|
|
if err := s.AddBindingInvocationHandler("run", runHandler); 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 *common.TopicEvent) (retry bool, err error) {
|
|
log.Printf("event - PubsubName:%s, Topic:%s, ID:%s, Data: %s", e.PubsubName, e.Topic, e.ID, e.Data)
|
|
return false, nil
|
|
}
|
|
|
|
func echoHandler(ctx context.Context, in *common.InvocationEvent) (out *common.Content, err error) {
|
|
if in == nil {
|
|
err = errors.New("nil invocation parameter")
|
|
return
|
|
}
|
|
log.Printf(
|
|
"echo - ContentType:%s, Verb:%s, QueryString:%s, %s",
|
|
in.ContentType, in.Verb, in.QueryString, in.Data,
|
|
)
|
|
out = &common.Content{
|
|
Data: in.Data,
|
|
ContentType: in.ContentType,
|
|
DataTypeURL: in.DataTypeURL,
|
|
}
|
|
return
|
|
}
|
|
|
|
func runHandler(ctx context.Context, in *common.BindingEvent) (out []byte, err error) {
|
|
log.Printf("binding - Data:%s, Meta:%v", in.Data, in.Metadata)
|
|
return nil, nil
|
|
}
|