MCPcopy
hub / github.com/nats-io/nats.go / Example

Function Example

micro/example_package_test.go:26–103  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

24)
25
26func Example() {
27 nc, err := nats.Connect("127.0.0.1:4222")
28 if err != nil {
29 log.Fatal(err)
30 }
31 defer nc.Close()
32
33 // endpoint handler - in this case, HandlerFunc is used,
34 // which is a built-in implementation of Handler interface
35 echoHandler := func(req micro.Request) {
36 req.Respond(req.Data())
37 }
38
39 // second endpoint
40 incrementHandler := func(req micro.Request) {
41 val, err := strconv.Atoi(string(req.Data()))
42 if err != nil {
43 req.Error("400", "request data should be a number", nil)
44 return
45 }
46
47 responseData := val + 1
48 req.Respond([]byte(strconv.Itoa(responseData)))
49 }
50
51 // third endpoint
52 multiplyHandler := func(req micro.Request) {
53 val, err := strconv.Atoi(string(req.Data()))
54 if err != nil {
55 req.Error("400", "request data should be a number", nil)
56 return
57 }
58
59 responseData := val * 2
60 req.Respond([]byte(strconv.Itoa(responseData)))
61 }
62
63 config := micro.Config{
64 Name: "IncrementService",
65 Version: "0.1.0",
66 Description: "Increment numbers",
67
68 // base handler - for simple services with single endpoints this is sufficient
69 Endpoint: &micro.EndpointConfig{
70 Subject: "echo",
71 Handler: micro.HandlerFunc(echoHandler),
72 },
73 }
74 svc, err := micro.AddService(nc, config)
75 if err != nil {
76 log.Fatal(err)
77 }
78 defer svc.Stop()
79
80 // add a group to aggregate endpoints under common prefix
81 numbers := svc.AddGroup("numbers")
82
83 // register endpoints in a group

Callers

nothing calls this directly

Calls 11

HandlerFuncFuncType · 0.92
AddServiceFunction · 0.92
ConnectMethod · 0.80
RespondMethod · 0.65
DataMethod · 0.65
ErrorMethod · 0.65
StopMethod · 0.65
AddGroupMethod · 0.65
AddEndpointMethod · 0.65
CloseMethod · 0.45
RequestMethod · 0.45

Tested by

no test coverage detected