![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
RabbitMQ
文章平均质量分 85
Thai_
never
展开
-
Spring Cloud Stream 实现消息顺序消费(RabbitMQ)
消息的顺序消费场景虽然用的不多,但在面试过程中还是会经常被问到的。打个比方,在用户购买商品的场景中,正常的流程是先发送 【创建订单消息 —> 支付 —> 发货】,如果还没支付成功就先发货了,那只好准备收拾东西走人了~那在 Spring Cloud Stream 中该怎么保证消息的顺序性呢?我们能够使用基于键值的方式做分区,让一个队列只存在一个消费者去做消费即可。Spring Cloud Stream 为我们提供了自定义策略,分别为分区键策略与 分区选择策略;原创 2022-10-20 23:58:07 · 1807 阅读 · 0 评论 -
Spring Cloud Stream 分区键表达式(partitionKeyExpression)不能使用 payload.field
由于使用的方式配置需要改生成者与消费者代码,RabbitMQ Binder 使用 Java 的序列化方式性能低下、发送与接收端使用的类需要一样(最起码保证 serialVersionUID 一致)否则强转失败,加上官方不建议使用 payload 的内容作为分区键表达式取值等等问题,导致使用起来非常的不便利,因此直接使用 headers 的方式会更加的简单明了,虽然从payload复制多了一份数据到headers但如果对象不大可以忽略不计。原创 2022-10-20 23:38:14 · 957 阅读 · 0 评论