diff --git a/router.go b/router.go index 8311fa9..fb862f0 100644 --- a/router.go +++ b/router.go @@ -1,8 +1,10 @@ package pubsubrouter import ( + "runtime/debug" "sync" + "github.com/google/martian/log" "github.com/sofyan48/pubsub-router/pkg/client" ) @@ -28,6 +30,11 @@ func (r *Router) Handle(routes string, h Handler) *Router { func (r *Router) HandleMessage(m *Message) error { path := m.Payload.Attributes[client.MessageAttributeNameRoute] + defer func() { + if err := recover(); err != nil { + log.Errorf("panic recovered: %v | stack : %v", err, string(debug.Stack())) + } + }() h, okRoute := r.handlers[path] if okRoute { m.Payload.Ack()