【问题标题】:Kafka message publishing failure for random valid messages , how to fix this issue?随机有效消息的Kafka消息发布失败,如何解决这个问题?
【发布时间】:2018-07-13 00:22:24
【问题描述】:

我们在我们的应用程序中使用了kafka,我们发送了太多消息,每条消息都很小,我的意思是消息大小不是问题,如果您尝试向kafka主题发布太多消息,他们有什么问题吗某些消息未能发布?

"Publishing error messages to kafka topic failed400 "

我们可以设置他们的任何 kafka 配置,以便我们可以克服这个问题吗?

注意:调用太多,我的意思是一个发送方法调用,一个消息。

如上所述,每条消息都不是太大,下面给出示例

{
    "error_details": [
        {
            "error_number": "123",
            "error_message": "how are you",
            "error_sequence": "12345"
        },
        {
            "error_number": "123",
            "error_message": "how are you",
            "error_sequence": "12345"
        },
        {
            "error_number": "123",
            "error_message": "how are you",
            "error_sequence": "12345"
        },
        {
            "error_number": "123",
            "error_message": "how are you",
            "error_sequence": "12345"
        }

    ]
}

这是最大尺寸

【问题讨论】:

  • 每次通话发送的消息数量如何影响您的问题。换句话说,问题似乎是消息太多或电话太多?
  • 是的电话太多,一个电话,我们正在发送一条消息
  • kafka 错误信息是什么?
  • @LijuJohn,我在问题中提到了
  • @Bravo - 我的意思是什么类型的 Kafka 异常(准确地说是 kafka 异常类名称)

标签: apache-kafka kafka-producer-api spring-kafka jms-topic


【解决方案1】:

你没有说你的消息有多大,但我会尝试增加 linger.ms

linger.ms 是生产者等待查看是否发送另一条消息的毫秒数。如果在该时间内发送了另一条消息,则两条消息将在一次调用中进行批处理。这可能对您的情况有所帮助。

batch.size 设置给出了一批消息的最大大小。即使延迟持续时间仍然有效,达到大于 batch.size 的组合消息大小也会立即发送批处理。

只是不要将 linger.ms 设置得太高。在达到该持续时间结束之前不会发送任何内容,除非批处理消息一起超过 batch.size

【讨论】:

  • 我们已经将 linger,ms 设置为 1 ,表示 1 毫秒,所以我们需要增加这个吗?多少钱好?
  • 这是一个权衡。值 1000 意味着您仅每秒发送一次批处理消息(除非在第二个结束之前超出 batch.size)。不确定您的 SLA'a 是什么,但临时设置为 1000 可以让您查看是否有任何改进。一旦你看到 1000 会做什么,试着降低它,直到你再次开始看到负载下的异常。然后从那时起尝试增加 batch.size 并降低 linger.ms,直到您对应用的运行方式感到满意为止。
  • @Bravo 你运气好吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-29
  • 1970-01-01
  • 1970-01-01
  • 2018-05-27
  • 1970-01-01
  • 2023-03-17
相关资源
最近更新 更多