pass errors from broker to subscribers
Some checks failed
test / test (push) Failing after 16m47s
coverage / build (push) Failing after 16m59s
sync / sync (push) Successful in 8s

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
2025-12-02 17:19:18 +03:00
parent 9dcdef57f4
commit 7a29f49751
5 changed files with 213 additions and 46 deletions

15
kgo.go
View File

@@ -112,6 +112,7 @@ type kgoMessage struct {
hdr metadata.Metadata
opts broker.MessageOptions
ack bool
err error
}
func (m *kgoMessage) Ack() error {
@@ -135,6 +136,10 @@ func (m *kgoMessage) Topic() string {
return ""
}
func (m *kgoMessage) Error() error {
return m.err
}
func (m *kgoMessage) Unmarshal(dst interface{}, opts ...codec.Option) error {
return m.c.Unmarshal(m.body, dst)
}
@@ -519,15 +524,6 @@ func (b *Broker) fnSubscribe(ctx context.Context, topic string, handler interfac
options := broker.NewSubscribeOptions(opts...)
switch handler.(type) {
default:
return nil, broker.ErrInvalidHandler
case func(broker.Message) error:
break
case func([]broker.Message) error:
break
}
if options.Group == "" {
uid, err := id.New()
if err != nil {
@@ -584,6 +580,7 @@ func (b *Broker) fnSubscribe(ctx context.Context, topic string, handler interfac
kgo.OnPartitionsLost(sub.lost),
kgo.AutoCommitCallback(sub.autocommit),
kgo.AutoCommitMarks(),
kgo.WithHooks(sub),
)
if options.Context != nil {