35 lines
783 B
Go
35 lines
783 B
Go
package biz
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"github.com/tx7do/kratos-transport/broker"
|
|
)
|
|
|
|
type ExampleStruct struct {
|
|
Name string `json:"name"`
|
|
ID int `json:"id"`
|
|
}
|
|
|
|
func ExampleCreator() broker.Any { return &ExampleStruct{} }
|
|
|
|
type ExmapleHandler func(_ context.Context, topic string, headers broker.Headers, msg *ExampleStruct) error
|
|
|
|
func RegisterExampleHandler(fnc ExmapleHandler) broker.Handler {
|
|
return func(ctx context.Context, event broker.Event) error {
|
|
if event.Error() != nil {
|
|
return event.Error()
|
|
}
|
|
msg, ok := event.Message().Body.(*ExampleStruct)
|
|
if !ok {
|
|
return fmt.Errorf("[Kafka] unsupported type: %T", event.Message().Body)
|
|
}
|
|
|
|
if err := fnc(ctx, event.Topic(), event.Message().Headers, msg); err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
}
|