公司动态

《RocketMQ 官网》阅读笔记 RocketMQ 生产者(Producer)

📅 2026/7/27 16:44:35
《RocketMQ 官网》阅读笔记 RocketMQ 生产者(Producer)
《RocketMQ 官网》阅读笔记 RocketMQ 生产者Producer生产者 (Producer)定义Apache RocketMQ 中的生产者是一种功能性消息实体用于创建消息并将其发送到服务器。生产者通常集成在业务系统中负责将数据封装为 Apache RocketMQ 消息并发送到服务器。生产者端定义了以下消息投递要素传输模式生产者可以在 API 操作中指定消息传输模式。Apache RocketMQ 支持同步传输和异步传输。批量传输生产者可以在 API 操作中指定批量传输。例如可以指定一次发送的消息数量或大小。事务行为Apache RocketMQ 支持事务消息。生产者参与事务检查以确保事务的最终一致性。生产者与主题之间存在多对多关系。一个生产者可以向多个主题发送消息一个主题也可以接收来自多个生产者的消息。这种多对多关系有助于实现性能扩展和灾难恢复。模型关系内部属性客户端 ID生产者客户端的标识。此属性用于区分不同的生产者。客户端 ID 在集群内是全局唯一的。客户端 ID 由 Apache RocketMQ SDK 自动生成。它主要用于运维目的如查看日志和定位问题。客户端 ID 不可修改。通信参数必需用于连接服务器的端点。此端点用于标识集群。接入点必须按格式配置。我们建议您使用域名以避免使用 IP 地址从而防止因节点变更导致无法进行热点迁移。可选客户端用于身份验证的凭证。仅当服务器启用了身份识别和认证时才需要传输此项。可选请求超时时间网络请求的超时周期。预绑定主题列表Apache RocketMQ 生产者发送消息的目标主题列表。预绑定主题提供以下优势事务消息 必需事务消息必须指定预绑定主题列表属性。在事务消息场景中当生产者从故障中恢复或重启时生产者会检查事务消息主题是否包含未提交的事务消息。这可以防止生产者向主题发送新消息后主题中残留的未提交事务消息导致延迟。非事务消息 可选服务器会在生产者初始化期间根据预绑定主题列表检查目标主题的访问权限和有效性而不是在应用程序启动后再进行检查。我们建议您为非事务消息也指定预绑定主题列表属性。如果未为非事务消息指定预绑定主题列表属性或者目标主题发生变更Apache RocketMQ 会动态检查并识别目标主题。对于事务消息必须指定预绑定主题并与事务检查器配合使用。事务检查器Apache RocketMQ 使用一种事务消息机制要求生产者实现事务检查器以确保事务的最终一致性。当生产者发送事务消息时必须配置事务检查器并将其与预绑定主题结合使用。发送重试策略发送重试策略指定了生产者在消息发送失败时如何重试投递。版本兼容性从 Apache RocketMQ 5.x 版本开始生产者是匿名的且已停止使用生产者组Producer Group。对于 Apache RocketMQ 3.x 和 4.x 版本现有的生产者组可以停止使用且不会影响您的业务。使用说明我们建议您限制单个进程中的生产者数量。在 Apache RocketMQ 中生产者和主题提供多对多的通信形式。单个生产者可以向多个主题发送消息。我们建议您创建并初始化业务场景所需的最少数量的生产者并尽可能复用生产者。例如在需要向多个主题发送消息的场景中您无需为每个主题创建一个生产者。我们建议您不要定期创建和销毁生产者。Apache RocketMQ 的生产者是底层资源可以像 数据库连接池一样复用。您无需在每次发送消息时创建生产者也无需在发送消息后销毁它们。如果您定期创建和销毁生产者会在 Broker 上产生大量短连接请求这会给您的系统带来沉重的负担。正确用法示例ProducerpProducerBuilder.build();for(inti0;in;i){MessagemMessageBuilder.build();p.send(m);}p.shutdown();错误用法示例for(inti0;in;i){ProducerpProducerBuilder.build();MessagemMessageBuilder.build();p.send(m);p.shutdown();}