FolkMQ v1.7.8

顺序消息

1、介绍

“顺序消息”,是在 “普通消息” 的基础上,要求按发布的顺序进行消费。

  • 生产者串行发布消息,会要求服务端给确认(confirm),否则异常提醒
  • 服务端收到消息,并转到队列后,会答复一个接收确认
  • 服务端串行派发消息,会要求消费者给回执(ack)
    • 如果派发失败,会不断延时重试,直到派发成功为止。之后,才会再派发下一条消息
  • 消费者消费后,会答复一个消费回执

适合像数据同步之类的 FIFO 应用场景。因为是串行消费,性能略差些。

2、代码演示

不分片。如果有集群,同一主题的消息会集中到某一个集群节点上(通过 topic_hash 进行负载均衡)

//同步
client.publish("demo.topic", new MqMessage("hello").sequence(true)));
//异步
client.publishAsync("demo.topic", new MqMessage("hello").sequence(true)));

分片。如果有集群,同一分片的消息会集中到某一个集群节点上(通过 sharding_hash 进行负载均衡)

//同步
client.publish("demo.topic", new MqMessage("hello").sequence(true, "sharding-1")));
//异步
client.publishAsync("demo.topic", new MqMessage("hello").sequence(true, "sharding-1")));

具体参考:《单线程及顺序保障架构图》