Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit ffc73dd

Browse files
committed
Updated nats doc
1 parent 6d3ae79 commit ffc73dd

File tree

5 files changed

+39
-13
lines changed

5 files changed

+39
-13
lines changed

‎README.md‎

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ Packages which use in this example project
5151
13. [jaeger](https://github.com/uber/jaeger-client-go) - Jaeger Bindings for Go OpenTracing API
5252
14. [casbin](https://github.com/casbin/casbin) - Supports access control
5353
15. [dataloaden](https://github.com/vektah/dataloaden) - DataLoader for graphql
54+
16. [nats](https://github.com/nats-io/nats.go) - Golang client for NATS, the cloud native messaging system
55+
17. [nats-streaming](https://github.com/nats-io/stan.go) - NATS Streaming System
5456

5557
# Installing
5658

@@ -185,7 +187,13 @@ http://localhost:9094/login
185187
## Http example with gRPC
186188

187189
```$xslt
188-
http://localhost:9096/products
190+
http://localhost:9096/products_grpc
191+
```
192+
193+
## Http example with Nats Streaming
194+
195+
```$xslt
196+
http://localhost:9096/products_nats
189197
```
190198

191199
## Graphql example with gRPC

‎app/logger/zap.go‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,11 +150,11 @@ func NewZap(ctx context.Context, cfg Config) *Zap {
150150

151151
if !cfg.Debug {
152152
cfg := zap.NewProductionConfig()
153-
logger, _ = cfg.Build(zap.AddCallerSkip(2), zap.AddStacktrace(zap.PanicLevel))
153+
logger, _ = cfg.Build(zap.AddCallerSkip(3), zap.AddStacktrace(zap.InfoLevel))
154154
} else {
155155
cfg := zap.NewDevelopmentConfig()
156156
cfg.EncoderConfig.EncodeLevel = zapcore.CapitalColorLevelEncoder
157-
logger, _ = cfg.Build(zap.AddCallerSkip(2))
157+
logger, _ = cfg.Build(zap.AddCallerSkip(3))
158158
}
159159

160160
go func(logger *zap.Logger) {

‎app/routers/products-router/router.go‎

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ import (
77
"net/http"
88
"time"
99

10-
"github.com/aristat/golang-example-app/common"
11-
"github.com/nats-io/nats.go"
1210
"github.com/nats-io/stan.go"
1311

12+
"github.com/aristat/golang-example-app/common"
1413
"github.com/go-chi/chi"
14+
"github.com/nats-io/nats.go"
1515

1616
"github.com/aristat/golang-example-app/app/grpc"
1717
"github.com/aristat/golang-example-app/app/logger"
@@ -27,10 +27,11 @@ type Router struct {
2727
}
2828

2929
func (router *Router) Run(chiRouter chi.Router) {
30-
chiRouter.Get("/products", router.GetProducts)
30+
chiRouter.Get("/products_grpc", router.GetProductsGrpc)
31+
chiRouter.Get("/products_nats", router.GetProductsNats)
3132
}
3233

33-
func (service *Router) GetProducts(w http.ResponseWriter, r *http.Request) {
34+
func (service *Router) GetProductsGrpc(w http.ResponseWriter, r *http.Request) {
3435
conn, d, err := grpc.GetConnGRPC(service.poolManager, common.SrvProducts)
3536
defer d()
3637
defer r.Body.Close()
@@ -55,6 +56,10 @@ func (service *Router) GetProducts(w http.ResponseWriter, r *http.Request) {
5556
return
5657
}
5758

59+
e.Encode(productOut)
60+
}
61+
62+
func (service *Router) GetProductsNats(w http.ResponseWriter, r *http.Request) {
5863
// Connect to NATS
5964
nc, err := nats.Connect(service.cfg.NatsURL)
6065
if err != nil {
@@ -73,5 +78,6 @@ func (service *Router) GetProducts(w http.ResponseWriter, r *http.Request) {
7378
// Close connection
7479
sc.Close()
7580

76-
e.Encode(productOut)
81+
e := json.NewEncoder(w)
82+
e.Encode("")
7783
}

‎cmd/product-service/nats_service.go‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package product_service
2+
3+
import (
4+
"github.com/aristat/golang-example-app/app/logger"
5+
"github.com/nats-io/stan.go"
6+
)
7+
8+
type natsService struct {
9+
logger logger.Logger
10+
}
11+
12+
func (s *natsService) workerHanlder(m *stan.Msg) {
13+
s.logger.Info("[NATS] Received a message: %s\n", logger.Args(string(m.Data)))
14+
m.Ack()
15+
}

‎cmd/product-service/product_service.go‎

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -135,11 +135,8 @@ var (
135135
defer nc.Close()
136136

137137
sc, _ := stan.Connect("test-cluster", "example-subscriber", stan.NatsConn(nc))
138-
139-
_, err = sc.QueueSubscribe(clientConfig.Subject, "worker", func(m *stan.Msg) {
140-
log.Printf("Received a message: %s\n", string(m.Data))
141-
m.Ack()
142-
}, stan.DurableName("i-will-remember"), stan.MaxInflight(1), stan.SetManualAckMode())
138+
natsService := natsService{logger: log}
139+
_, err = sc.QueueSubscribe(clientConfig.Subject, "worker", natsService.workerHanlder, stan.DurableName("i-will-remember"), stan.MaxInflight(1), stan.SetManualAckMode())
143140

144141
if err != nil {
145142
sc.Close()

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /