You need to enable JavaScript to run this app.
导航
概述
最近更新时间:2023.10.18 20:12:32首次发布时间:2022.10.31 19:10:13

火山引擎消息队列 Kafka版完全兼容开源 Kafka 协议,支持多语言 SDK,客户端可以通过 VPC 网络和公网访问两种方式接入消息队列 Kafka版,并收发消息。消息队列 Kafka版提供消息生产和消费的示例项目,并提供参考文档,基于示例项目介绍使用客户端访问火山引擎消息队列 Kafka版来收发消息的主要流程。

SDK 类型

消息队列 Kafka版实例完全兼容开源 Kafka 协议,可以直接使用 Kafka开源客户端连接。

SDK类型

用途及说明

Apache Kafka 客户端 SDK

消息队列 Kafka版与开源 Apache Kafka 完全兼容,支持通过开源 Kafka SDK 生产和消费消息。开源 Kafka SDK 通常集成在客户端程序中,用于管理 Kafka 实例中的资源和数据,例如生产消息、消费消息。
消息队列 Kafka版提供 Go、Java 等多语言的示例项目供您参考,其中包括各种机制下的消息生产与消息消费的示例代码。详细信息请参考:

Volcengine OpenAPI SDK

火山引擎提供管控面的多语言 SDK,供您调用火山引擎各个服务的 OpenAPI,通过调用API接口实现管理云资源的需求,免去签名与鉴权的流程,快速接入云服务。
消息队列 Kafka版已对接火山引擎 OpenAPI SDK,您可以参考以下文档安装并使用Volcengine SDK。

限制说明

类别

限制说明

生产消息

  • 对于消息的时延敏感的场景,建议通过 linger.ms=0 设置发送优化。
  • 消息发送失败时,需要有重试机制。您可以通过参数 retries 配置重试次数,建议重试 3 次。
  • 生产的 callback 函数不能阻塞,否则会造成客户端消息的发送阻塞等问题。
  • 建议在生产端的预留足够的 JVM 内存,避免因内存不足导致发送阻塞等问题。

消费消息

  • 特殊场景下,Kafka 可能存在重复消费的现象,业务侧需保证消息处理的幂等性。
  • 建议合理设置消费者拉取的消息本地缓存大小,避免内存溢出(OOM)。
  • 消费线程退出时,应调用消费者的 close 方法,避免同一个组的其他消费者阻塞 sesstion.timeout.ms 的时间。
  • 消费者的 owner 线程如果异常退出,可能会导致客户端未发起消费请求,引起阻塞消费等问题,所以需确保 owner 线程的稳定性。
  • 使用长连接 poll 模式消费消息时,如果消费结束后立即关闭 consumer 通道,会导致频繁再均衡(rebalance),从而阻塞消费进度。
  • 建议消费者需周期性 poll 的间隔设置为 200 毫秒,维持在服务端的心跳状态,避免因为心跳超时导致消费者频繁加入和退出,阻塞消费进度。
  • 应根据业务情况,为消费者的 session 设置一个合理值,例如通过以下参数设置为30秒:session.timeout.ms=30000。
  • 建议消费者数量不超过 topic 的分区数,否则会有消费者拉取不到消息。
  • 建议在处理完消息后再做消息 commit,否则当业务消息处理失败,无法重新拉取处理失败的消息。