Skip to content

Commit d6c5263

Browse files
committed
RabbitMQ
1 parent baacc3d commit d6c5263

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

markdown-file/RabbitMQ-Install-And-Settings.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,10 +137,14 @@ yum install rabbitmq-server -y
137137

138138
- 一般场景不需要消息顺序,要去做一般也开销很大,需要执行考虑。
139139
- 在能保证消息顺序的情况下,可以用来做数据同步
140+
- 解决:
141+
- 消费者只有单个应用,并且内容不要使用异步或者多线程。在这种场景下绑定 queue,**基于消息队列本质是队列,消息是 FIFO(先进先出)的**,这样消息就能按顺序。但是缺点很明显:吞吐太差,效率太低,适合低效率的业务。
142+
- 基于上面方案并且对队列进行分片。假设我们原来 repay.queue下面有 10 个消费者线程,那么我们可以创建10个队列,每个队列下面只允许有一个消费者。一个比较简单的方式是,队列命名为 repay.queue-0,repay.queue-2…repay.queue-9,然后生产者推送信息的时候,基于用户的ID(Long类型)mod 10 取模 0…9(取余),再选择发送到相应的队列即可,这样就等保证同一个用户的顺序。
140143

141144

145+
## 资料
142146

143-
147+
- <http://throwable.coding.me/2018/03/25/out-of-order-consume/>
144148

145149

146150

0 commit comments

Comments
 (0)