山丨海
2018-04-12 03:02
采纳率: 50%
浏览 2.2k

springmvc异步更新mysql数据库的实现方法?!

我这边有这样一个需求,通过IoT在100ms内采集到的数据生成500个insert或者update请求操作数据库,
我如何才能将这些请求从原方法中异步出来,并且进行批量操作?
有人跟我说用redis缓存来做,可是我查到的都是用redis来做批量读的,这个在读的时候成功了,但是还是没有解决写的问题

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • little_how 2018-04-12 03:13
    已采纳

    给你提供思路
    1.直接开启一个线程(Thread),让新线程来执行,就已经异步了;
    2.自定义一个spring事件继承ApplicationEvent即可,然后在生成完语句后publish这个事件;
    事件里面保存的就是你的语句或语句的引用,然后在处理事件的时候开启Async注解(spring)异步处理事件
    3.将处理消息发送给消息队列,如kafka等;(适用于高并发场景)

    如果业务量不大推荐使用第2种方式,业务量大使用第3种方式;
    希望能够帮到你...

    打赏 评论
  • 007Detective 2018-04-12 03:10

    我觉得要不试试队列?把请求放到队列里面,采用延时(或者多个队列)等方式,到时间后操作队列里的数据

    打赏 评论
  • 三阶魔方 2018-04-12 03:26

    我这也有个思路。

    用Redis或者active mq。

    nio(你应该用了mina,netty这类工具吧)那边收到数据后,直接把decode后的数据放入线程队列(写入redis或者发送到activemq那边)。

    然后再做一个程序,作为消费者,订阅(Redis里有个lock方法可以形成类似订阅的效果)。

    订阅的这边再去做插入和更新。

    可以看看spring boot一类的微服务,可以比较方便的实现这个思路。

    而且只要接受的活着,就能始终接受输入。

    订阅可以启动好几个,分布在不同的机器或者虚拟机里,还能降低死锁的概率。

    打赏 评论
  • always987905790 2018-04-12 03:42

    Redius 吧 楼上说的还是比较清楚的

    打赏 评论

相关推荐 更多相似问题