From 74b29ac2366ac30b345655da6ac49aff7111e7de Mon Sep 17 00:00:00 2001 From: Vasiliy Tolstov Date: Fri, 16 Oct 2020 16:20:19 +0300 Subject: [PATCH] fixup for never micro Signed-off-by: Vasiliy Tolstov --- go.mod | 2 +- go.sum | 4 ++-- http.go | 31 ++++++++++++++++++++----------- 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/go.mod b/go.mod index 3100466..2c8f34e 100644 --- a/go.mod +++ b/go.mod @@ -2,4 +2,4 @@ module github.com/unistack-org/micro-server-http go 1.13 -require github.com/unistack-org/micro/v3 v3.0.0-gamma.0.20201009135158-2fc47782cf47 +require github.com/unistack-org/micro/v3 v3.0.0-gamma.0.20201016063857-14c97d59c15f diff --git a/go.sum b/go.sum index 717b1f1..9429d4c 100644 --- a/go.sum +++ b/go.sum @@ -289,8 +289,8 @@ github.com/unistack-org/micro-config-cmd v0.0.0-20200920140133-0853deb2e5dc/go.m github.com/unistack-org/micro/v3 v3.0.0-20200827083227-aa99378adc6e/go.mod h1:rPQbnry3nboAnMczj8B1Gzlcyv/HYoMZLgd3/3nttJ4= github.com/unistack-org/micro/v3 v3.0.0-gamma.0.20200909210629-caec730248b1/go.mod h1:mmqHR9WelHUXqg2mELjsQ+FJHcWs6mNmXg+wEYO2T3c= github.com/unistack-org/micro/v3 v3.0.0-gamma.0.20200920135754-1cbd1d2bad83/go.mod h1:HUzMG4Mcy97958VxWTg8zuazZgwQ/aoLZ8wtBVONwRE= -github.com/unistack-org/micro/v3 v3.0.0-gamma.0.20201009135158-2fc47782cf47 h1:3d/HgT7Iq/UIw5OGyzfUeZPJwydhBohh9shyGJH14EA= -github.com/unistack-org/micro/v3 v3.0.0-gamma.0.20201009135158-2fc47782cf47/go.mod h1:aL+8VhSXpx0SuEeXPOWUo5BgS7kyvWYobeXFay90UUM= +github.com/unistack-org/micro/v3 v3.0.0-gamma.0.20201016063857-14c97d59c15f h1:9PLnkfb9vdn1yHlKLIGo5AiSNzqerZscsm9R+uW+DAw= +github.com/unistack-org/micro/v3 v3.0.0-gamma.0.20201016063857-14c97d59c15f/go.mod h1:aL+8VhSXpx0SuEeXPOWUo5BgS7kyvWYobeXFay90UUM= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/vultr/govultr v0.1.4/go.mod h1:9H008Uxr/C4vFNGLqKx232C206GL0PBHzOP0809bGNA= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= diff --git a/http.go b/http.go index 0accf2b..7fb604e 100644 --- a/http.go +++ b/http.go @@ -17,7 +17,6 @@ import ( "github.com/unistack-org/micro/v3/logger" "github.com/unistack-org/micro/v3/registry" "github.com/unistack-org/micro/v3/server" - regutil "github.com/unistack-org/micro/v3/util/registry" ) var ( @@ -137,14 +136,11 @@ func (h *httpServer) Register() error { eps := h.hd.Endpoints() h.Unlock() - service, err := regutil.NewService(h) + service, err := server.NewRegistryService(h) if err != nil { return err } - if len(service.Metadata) == 0 { - service.Metadata = make(map[string]string, 5) - } - service.Metadata["protocol"] = "http" + service.Nodes[0].Metadata["protocol"] = "http" service.Endpoints = eps h.Lock() @@ -183,6 +179,8 @@ func (h *httpServer) Register() error { } h.registered = true + subCtx := h.opts.Context + for sb := range h.subscribers { handler := h.createSubHandler(sb, opts) var subOpts []broker.SubscribeOption @@ -190,11 +188,15 @@ func (h *httpServer) Register() error { subOpts = append(subOpts, broker.Queue(queue)) } + if cx := sb.Options().Context; cx != nil { + subCtx = cx + } + if !sb.Options().AutoAck { subOpts = append(subOpts, broker.DisableAutoAck()) } - sub, err := opts.Broker.Subscribe(sb.Topic(), handler, subOpts...) + sub, err := opts.Broker.Subscribe(subCtx, sb.Topic(), handler, subOpts...) if err != nil { return err } @@ -210,7 +212,7 @@ func (h *httpServer) Deregister() error { logger.Infof("Deregistering node: %s", opts.Name+"-"+opts.Id) - service, err := regutil.NewService(h) + service, err := server.NewRegistryService(h) if err != nil { return err } @@ -226,10 +228,17 @@ func (h *httpServer) Deregister() error { } h.registered = false + subCtx := h.opts.Context for sb, subs := range h.subscribers { for _, sub := range subs { + if cx := sb.Options().Context; cx != nil { + subCtx = cx + } logger.Infof("Unsubscribing from topic: %s", sub.Topic()) - sub.Unsubscribe() + if err := sub.Unsubscribe(subCtx); err != nil { + logger.Errorf("failed to unsubscribe topic: %s, error: %v", sb.Topic(), err) + return err + } } h.subscribers[sb] = nil } @@ -261,7 +270,7 @@ func (h *httpServer) Start() error { return errors.New("Server required http.Handler") } - if err = opts.Broker.Connect(); err != nil { + if err = opts.Broker.Connect(h.opts.Context); err != nil { return err } @@ -334,7 +343,7 @@ func (h *httpServer) Start() error { // deregister h.Deregister() - opts.Broker.Disconnect() + opts.Broker.Disconnect(h.opts.Context) }() return nil