@@ -15,6 +15,11 @@ import (
1515 "github.com/goto/raccoon/metrics"
1616)
1717
18+ const (
19+ errUnknownTopic = "Local: Unknown topic" //error msg while producing a message to a topic which is not present in the kafka cluster
20+ errLargeMessageSize = "Broker: Message size too large" //error msg while producing a message which is larger than message.max.bytes config
21+ )
22+
1823// KafkaProducer Produce data to kafka synchronously
1924type KafkaProducer interface {
2025 // ProduceBulk message to kafka. Block until all messages are sent. Return array of error. Order is not guaranteed.
@@ -63,11 +68,21 @@ func (pr *Kafka) ProduceBulk(events []*pb.Event, connGroup string, deliveryChann
6368 err := pr .kp .Produce (message , deliveryChannel )
6469 if err != nil {
6570 metrics .Increment ("kafka_messages_delivered_total" , fmt .Sprintf ("success=false,conn_group=%s,event_type=%s" , connGroup , event .Type ))
66- if err .Error () == "Local: Unknown topic" {
71+ switch err .Error () {
72+ case errUnknownTopic :
73+ errors [order ] = fmt .Errorf ("%v %s" , err , topic )
74+ metrics .Increment ("kafka_error" ,
75+ fmt .Sprintf ("type=%s,topic=%s,event_type=%s,conn_group=%s" ,
76+ "unknown_topic" , topic , event .Type , connGroup ))
77+
78+ case errLargeMessageSize :
6779 errors [order ] = fmt .Errorf ("%v %s" , err , topic )
68- metrics .Increment ("kafka_unknown_topic_failure_total" , fmt .Sprintf ("topic=%s,event_type=%s,conn_group=%s" , topic , event .Type , connGroup ))
69- } else {
80+ metrics .Increment ("kafka_error" ,
81+ fmt .Sprintf ("type=%s,topic=%s,event_type=%s,conn_group=%s" ,
82+ "message_too_large" , topic , event .Type , connGroup ))
83+ default :
7084 errors [order ] = err
85+ logger .Errorf ("produce to kafka failed due to: %v on topic : %s" , err , topic )
7186 }
7287 continue
7388 }
0 commit comments