forked from mchmarny/dapr-demos
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
60 lines (48 loc) · 1.34 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package main
import (
"context"
"fmt"
"log"
"net/http"
"os"
"strings"
"github.com/dapr/go-sdk/service/common"
daprd "github.com/dapr/go-sdk/service/http"
)
var (
logger = log.New(os.Stdout, "", 0)
address = getEnvVar("ADDRESS", ":8080")
pubSubName = getEnvVar("PUBSUB_NAME", "http-events")
topicName = getEnvVar("TOPIC_NAME", "messages")
)
func main() {
// create a Dapr service
s := daprd.NewService(address)
// add some topic subscriptions
subscription := &common.Subscription{
PubsubName: pubSubName,
Topic: topicName,
Route: fmt.Sprintf("/%s", topicName),
}
if err := s.AddTopicEventHandler(subscription, eventHandler); err != nil {
logger.Fatalf("error adding topic subscription: %v", err)
}
// start the service
if err := s.Start(); err != nil && err != http.ErrServerClosed {
logger.Fatalf("error starting service: %v", err)
}
}
func eventHandler(ctx context.Context, e *common.TopicEvent) (retry bool, err error) {
logger.Printf(
"event - PubsubName:%s, Topic:%s, ID:%s, Data: %v",
e.PubsubName, e.Topic, e.ID, e.Data,
)
// TODO: do something with the cloud event data
return false, nil
}
func getEnvVar(key, fallbackValue string) string {
if val, ok := os.LookupEnv(key); ok {
return strings.TrimSpace(val)
}
return fallbackValue
}