火山引擎消息队列 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,否则当业务消息处理失败,无法重新拉取处理失败的消息。
|