请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

queue数据安全的问题

老师,您好。自己存在一个疑问Google了很久,没找出合理的解释,这边请教一下您。
问题:
如果现在是高并发的场景下面往rabbitmq的队列中写入数据,会不会出现这么一种情况:前面一个线程在index位置上面写入了数据,因为写入成功,所以return模式返回true,但因为是高并发场景,所以后一个线程有没有可能也是在这个index位置上面写入了数据,然后return返回了true。如果会覆盖的话,数据应该会丢失吧!!

正在回答 回答被采纳积分+3

1回答

Moody 2021-06-30 17:15:08

你说的index是指的什么?是插入数据库时的主键?还是mabbitmq里消息的编号?

0 回复 有任何疑惑可以回复我~
  • 提问者 我什么都不会的 #1
    哦哦,我没说清楚,是队列的位置。比如说现在存在10000个线程同时往exchange中发送了数据,在这种并发的场景下面,exchange会不会把这个消息写在队列的同一个位置上面。
    回复 有任何疑惑可以回复我~ 2021-06-30 17:20:35
  • Moody 回复 提问者 我什么都不会的 #2
    这个不用担心,如果这种并发问题都处理不好,就不能成为优秀的消息中间件了。这种一般来说需要用并发锁,往里写数据的时候临时锁一下,或者使用单线程写。总之是不用担心的。
    回复 有任何疑惑可以回复我~ 2021-06-30 17:27:13
  • 提问者 我什么都不会的 回复 Moody #3
    老师,我确认一下你的回答哈!您的意思是现在10000个线程在同一时刻往Exchange里面发送了数据,Exchange自动会帮我们做好控制,即自动帮我们控制不会在队列的同一个位置上面进行写数据,我们不需要在我们的代码里面通过锁进行控制?还是我们需要在我们的代码里面通过jvm锁或者分布式锁控制同一时刻就一个线程往Exchange里面添加数据?
    回复 有任何疑惑可以回复我~ 2021-07-01 09:27:36
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信