配置相关

与消息队列配置相关的常见问题如下:

消息队列消息在服务器保存多长时间?

存储的消息最多保存 3 天,超过 3 天未消费的消息会被删除。

消息队列消息 Body 的长度限制是多少?

消息大小根据消息类型来限制。具体限制如下所述:

  • 普通消息和顺序消息:4 MB

  • 事务消息和定时/延时消息:4 MB

消息队列客户端如何设置消费线程数?

在启动 Consumer 时,设置一个 ConsumeThreadNums 属性即可。具体示例如下所示:

public static void main(String[] args) {
        Properties properties = new Properties();
        properties.put(PropertyKeyConst.GROUP_ID, "GID_001");
        // 阿里云账号 AccessKey 拥有所有 API 的访问权限,风险很高。强烈建议您创建并使用 RAM 用户进行 API 访问或日常运维,请登录 RAM控 制台创建 RAM 用户。
        // 此处以把 AccessKey 和 AccessKeySecret 保存在环境变量为例说明。
        // 强烈建议不要把 AccessKey 和 AccessKeySecret 保存到代码里,会存在密钥泄漏风险
        properties.put(PropertyKeyConst.AccessKey, "SOFA_AK_ENV");
        properties.put(PropertyKeyConst.SecretKey, "SOFA_SK_ENV");
        /**
         * 设置消费端线程数固定为 20
         */
        properties.put(PropertyKeyConst.ConsumeThreadNums, 20);
        Consumer consumer = ONSFactory.createConsumer(properties);
        consumer.subscribe("TestTopic", "*", new MessageListener() {
            publicAction consume(Message message, ConsumeContext context) {
                System.out.println("Receive: " + message);
                return Action.CommitMessage;
            }
        });
        consumer.start();
        System.out.println("Consumer Started");
}