Skip to content

Instantly share code, notes, and snippets.

View shijuvar's full-sized avatar

Shiju Varghese shijuvar

View GitHub Profile
@shijuvar
shijuvar / main.go
Created October 11, 2016 09:24
The gRPC Client
package main
import (
"io"
"log"
"golang.org/x/net/context"
"google.golang.org/grpc"
pb "github.com/shijuvar/go-recipes/grpc/customer"
@shijuvar
shijuvar / order_test.go
Created January 30, 2017 10:42
Benchmarking Protocol Buffers, JSON and XML in Go.
// Benchmark testing to measure the performance of marshaling and unmarshaling of ProtoBuf, JSON and XML
package order
import (
"encoding/json"
"encoding/xml"
"testing"
"time"
"github.com/golang/protobuf/proto"
@shijuvar
shijuvar / main.go
Last active April 10, 2017 16:12
NATS Request-Reply Request
func main() {
// Create NATS server connection
natsConnection, _ := nats.Connect(nats.DefaultURL)
log.Println("Connected to " + nats.DefaultURL)
msg, err := natsConnection.Request("Discovery.OrderService", nil, 1000*time.Millisecond)
if err == nil && msg != nil {
orderServiceDiscovery := pb.ServiceDiscovery{}
err := proto.Unmarshal(msg.Data, &orderServiceDiscovery)
@shijuvar
shijuvar / main.go
Created April 10, 2017 16:31
NATS Request-Reply Response
var orderServiceUri string
orderServiceUri = viper.GetString("discovery.orderservice")
func main() {
// Create server connection
natsConnection, _ := nats.Connect(nats.DefaultURL)
log.Println("Connected to " + nats.DefaultURL)
natsConnection.Subscribe("Discovery.OrderService", func(m *nats.Msg) {
orderServiceDiscovery := pb.ServiceDiscovery{OrderServiceUri: orderServiceUri}
@shijuvar
shijuvar / main.go
Created April 11, 2017 03:32
Publisher Client of NATS Publish-Subscribe messaging
const (
aggregate = "Order"
event = "OrderCreated"
)
// publishOrderCreated publish an event via NATS server
func publishOrderCreated(order *pb.Order) {
// Connect to NATS server
natsConnection, _ := nats.Connect(nats.DefaultURL)
log.Println("Connected to " + nats.DefaultURL)
@shijuvar
shijuvar / main.go
Last active April 11, 2017 04:20
Subscriber Client of NATS Publish-Subscribe messaging
const subject = "Order.>"
func main() {
// Create server connection
natsConnection, _ := nats.Connect(nats.DefaultURL)
log.Println("Connected to " + nats.DefaultURL)
// Subscribe to subject
natsConnection.Subscribe(subject, func(msg *nats.Msg) {
eventStore := pb.EventStore{}
@shijuvar
shijuvar / main.go
Last active February 22, 2020 04:08
Subscriber Client with queue group, of NATS Publish-Subscribe messaging
const (
queue = "Order.OrdersCreatedQueue"
subject = "Order.OrderCreated"
)
func main() {
// Create server connection
natsConnection, _ := nats.Connect(nats.DefaultURL)
log.Println("Connected to " + nats.DefaultURL)
@shijuvar
shijuvar / main.go
Created October 14, 2017 07:13
eventstore: A NATS Streaming client that publish events on NATS Streaming channel
package main
import (
"context"
"log"
"net"
stan "github.com/nats-io/go-nats-streaming"
"google.golang.org/grpc"
@shijuvar
shijuvar / publishasync.go
Last active October 14, 2017 09:51
Publish messages asynchronously to NATS Streaming Server
ackHandler := func(ackedNuid string, err error) {
if err != nil {
log.Printf("Error publishing message id %s: %v\n", ackedNuid, err.Error())
} else {
log.Printf("Received ACK for message id %s\n", ackedNuid)
}
}
channel := event.Channel
eventMsg := []byte(event.EventData)
@shijuvar
shijuvar / main.go
Last active October 14, 2017 13:19
A NATS Streaming client that subscribe messages from a channel “order-notification”
package main
import (
"encoding/json"
"log"
"runtime"
"time"
stan "github.com/nats-io/go-nats-streaming"