开发者社区 > 云原生 > 云消息队列 > 正文

咨询一下大佬们。Apache RocketMQ中Message 中包含的 flag 属性,有什么特?

咨询一下大佬们。Apache RocketMQ中Message 中包含的 flag 属性,有什么特殊用处吗?image.png 看了一下代码提交记录,应该是设计之初就加了该字段,但是没找到说明,官方文档也没有说明。

展开
收起
真的很搞笑 2023-05-23 20:03:33 134 0
1 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    Apache RocketMQ中的消息(Message)对象包含一个flag属性,它是一个int类型的整数,用于控制消息的一些特殊标志。具体来说,flag属性的作用如下:

    1. 事务消息 如果想要将消息发送为事务消息,可以将flag设置为MessageConst.PROPERTY_TRANSACTION_PREPARED。RocketMQ中支持两种事务消息的处理方式:预处理(Prepared)和提交(Commit)。在向发送半消息时,可以将flag设置为MessageConst.PROPERTY_TRANSACTION_PREPARED,表示这是一个预处理事务消息。在事务消息处理器将事务状态更改为提交或回滚时,再发送提交或回滚的消息,这些消息的flag中应该是MessageConst.PROPERTY_TRANSACTION_COMMITMessageConst.PROPERTY_TRANSACTION_ROLLBACK

    2. 批量消息 如果想要将消息发送为批量消息,可以将flag设置为MessageConst.PROPERTY_BATCH。同一个批量消息中可以包含多条消息,每条消息的key和tag应该相同。发送批量消息可以提高消息的发送效率,但是会影响消息的可靠性。

    3. 压缩消息 如果想要对消息进行压缩,可以将flag设置为MessageConst.PROPERTY_COMPRESS。RocketMQ支持自定义的消息压缩算法,将消息压缩后可以节省存储空间和网络带宽。

    例如,下面的代码演示了如何使用 flag 属性将消息发送为批量消息:

    import org.apache.rocketmq.common.message.Message;
    import org.apache.rocketmq.common.message.MessageConst;
    
    // 创建一组相同的消息
    Message msg1 = new Message("TopicTest", "TagA", "key1", "Hello RocketMQ 1".getBytes());
    Message msg2 = new Message("TopicTest", "TagA", "key1", "Hello RocketMQ 2".getBytes());
    Message msg3 = new Message("TopicTest", "TagA", "key1", "Hello RocketMQ 3".getBytes());
    
    // 设置批量发送的标志位
    msg1.putUserProperty(MessageConst.PROPERTY_BATCH, "true");
    msg2.putUserProperty(MessageConst.PROPERTY_BATCH, "true");
    msg3.putUserProperty(MessageConst.PROPERTY_BATCH, "true");
    
    // 将消息发送到Broker
    producer.send(Arrays.asList(msg1, msg2, msg3));
    

    flag 属性并不是必须设置的,通常情况下可以使用默认值。

    2023-05-23 23:07:42
    赞同 展开评论 打赏

涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/

相关产品

  • 云消息队列 MQ
  • 热门讨论

    热门文章

    相关电子书

    更多
    Apache Flink技术进阶 立即下载
    Apache Spark: Cloud and On-Prem 立即下载
    Hybrid Cloud and Apache Spark 立即下载

    相关镜像