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
Last active May 28, 2018 15:08
Register a server unary interceptor for authorization per RPC calls.
func init() {
grpcLog = grpclog.NewLoggerV2(os.Stdout, os.Stderr, os.Stderr)
grpclog.SetLoggerV2(grpcLog)
}
func main() {
lis, err := net.Listen("tcp", port)
if err != nil {
grpcLog.Fatalf("failed to listen: %v", err)
}
// Creates a new gRPC server with UnaryInterceptor
@shijuvar
shijuvar / main.go
Created May 28, 2018 12:35
UnaryServerInterceptor for authorization.
// Authorization unary interceptor function to handle authorize per RPC call
func serverInterceptor(ctx context.Context,
req interface{},
info *grpc.UnaryServerInfo,
handler grpc.UnaryHandler) (interface{}, error) {
start := time.Now()
// Skip authorize when GetJWT is requested
if info.FullMethod != "/proto.EventStoreService/GetJWT" {
if err := authorize(ctx); err != nil {
return nil, err
@shijuvar
shijuvar / main.go
Last active October 14, 2017 13:11
A NATS Streaming client that subscribes messages with a QueueGroup
package main
import (
"encoding/json"
"log"
"runtime"
stan "github.com/nats-io/go-nats-streaming"
"github.com/shijuvar/gokit/examples/nats-streaming/pb"
@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"
@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
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 / 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
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
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
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}