fix graceful shutdown

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
2023-05-13 15:12:26 +03:00
parent 8bbcc30d04
commit 3a86d4c0f4
2 changed files with 26 additions and 5 deletions

18
kgo.go
View File

@@ -11,13 +11,14 @@ import (
"time"
"github.com/twmb/franz-go/pkg/kgo"
"github.com/twmb/franz-go/pkg/kmsg"
"go.unistack.org/micro/v3/broker"
"go.unistack.org/micro/v3/metadata"
id "go.unistack.org/micro/v3/util/id"
mrand "go.unistack.org/micro/v3/util/rand"
)
var _ broker.Broker = &Broker{}
var _ broker.Broker = (*Broker)(nil)
var ErrLostMessage = errors.New("message not marked for offsets commit and will be lost in next iteration")
@@ -134,6 +135,9 @@ func (k *Broker) Disconnect(ctx context.Context) error {
return nctx.Err()
default:
for _, sub := range k.subs {
if sub.closed {
continue
}
if err := sub.Unsubscribe(ctx); err != nil {
return err
}
@@ -306,6 +310,18 @@ func (k *Broker) Subscribe(ctx context.Context, topic string, handler broker.Han
return nil, err
}
mdreq := kmsg.NewMetadataRequest()
mdreq.Topics = []kmsg.MetadataRequestTopic{
{Topic: &topic},
}
mdrsp, err := mdreq.RequestWith(ctx, c)
if err != nil {
return nil, err
} else if mdrsp.Topics[0].ErrorCode != 0 {
return nil, fmt.Errorf("topic %s not exists or permission error", topic)
}
sub.c = c
go sub.poll(ctx)