登录
首页 >  Golang >  Go问答

Kafka Producer 终止,仍有 1 条 881 字节的消息在队列或传输中

来源:stackoverflow

时间:2024-03-28 09:12:27 344浏览 收藏

Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《Kafka Producer 终止,仍有 1 条 881 字节的消息在队列或传输中》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!


问题内容

我对 kafka 还很陌生,在向生产者推送价值时收到此消息

func Produce(topic string, key string, message interface{}) {

    headers := map[string][]byte{
        MSG_HEADER_KEY_CORRELATIONID: []byte("1234"),
        MSG_HEADER_KEY_REQUESTID:     []byte(uuid.NewString()),
        MSG_HEADER_KEY_TESTID:        []byte("456"),
        MSG_HEADER_KEY_MESSAGETYPE:   []byte("TestLookupRequest"),
    }

    kheaders := make([]kafka.Header, 0, len(headers))
    for k, v := range headers {
        kheaders = append(kheaders, kafka.Header{Key: k, Value: v})
    }


    var err error

    servers := "XXXXXX"
    protocol := "SASL_SSL"
    mechanisms := "PLAIN"
    username := "XXXXXXX"
    password := "XXXXXXX"


    Producer, err = kafka.NewProducer(&kafka.ConfigMap{
        "bootstrap.servers": servers,
        "security.protocol": protocol,
        "sasl.username":     username,
        "sasl.password":     password,
        "sasl.mechanism":    mechanisms,
    })

    if err != nil {
        panic(err)
    }
    defer Producer.Close()

    value, _ := json.Marshal(message)

    err = Producer.Produce(&kafka.Message{
        TopicPartition: kafka.TopicPartition{Topic: &topic, Partition: kafka.PartitionAny},
        Key:           []byte("12345"),
        Headers:       kheaders,
        Value:         value,
        Timestamp:     time.Now().UTC(),
        TimestampType: kafka.TimestampCreateTime,
    }, nil)

    if err != nil {
        panic(err)
    }
    Producer.Flush(30)
}

%4|1641074998.615|终止|rdkafka# producer-1 | [thrd:app]:生产者终止,1条消息(881字节)仍在队列或传输中:使用flush()等待未完成的消息传递

有关如何解决此问题的任何帮助吗?


正确答案


请在 Flush(); 时尝试更长的超时时间; 30 毫秒可能还不够。或者尝试使用通道,如下例所示: https://github.com/confluentinc/confluent-kafka-go/blob/80c58f81b6cc32d3ed046609bf660a41a061b23d/examples/producer_example/producer_example.go

理论要掌握,实操不能落!以上关于《Kafka Producer 终止,仍有 1 条 881 字节的消息在队列或传输中》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>