Java库存变化每少1000就发送一次短信 5C

如何实现库存每少1000就发送一次短信,本来是打算定时的但是可能在定时时间超过1000第一次的就没有统计下来,请问该如何实现

6个回答

你问题的关键无非就是让数据库主动发短信,而不是轮询。看你用什么数据库,sql server有集成服务(ssis),mysql没有,但是支持调用外部程序。

参考:https://www.cnblogs.com/yfceshi/p/7259020.html
你在数据库里加上表触发器(trigger),当你修改库存记录的时候会触发,在里面判断是否<1000,如果是,调用外部程序,而你的外部程序要么自己发短信,要么再调用你的java网站,都可以。

caozhy
贵阳老马马善福专门编写代码的老马就是我! 回复ejiao1233: 修改触发器在每次库存改变都会执行,但是你可以加上判断,只在<1000的时候调用程序发信息。
大约一年之前 回复
ejiao1233
alunSemiconductor 他说的是每减少一次吧,你这个还有点区别哦
大约一年之前 回复

用mq呀,订阅一下减库存消息,每次消息来检查下已扣库存是否到1k整数倍就行

再建立一张表,表的每行都记录1000的整数倍,例如 1000 2000 3000,4000... 每次库存减少 就把库存的值写入到对应的行中,
例如库存之前是3000到4000,现在变成2000到3000,然后就触发发短信

你这个还涉及库存数据会增加的吧,所以监控的不是库存值,应当是变化值,确切地的应该是减少值,所以应当是减库存操作成功后,记录减掉的值,然后累计计算。

具体点,可以这样,减库存成功时,把减掉的数量发到消息队列,消费者监听、累加、判断,超过1000后发短信,并把累加值减去1000;(因为可能一次性减多个,总的变化值不一定刚好是1000,细节问题就看怎么处理了,这里给的建议是严格按照1000个处理的)

  1. 数据库里创建一个表 tb_test
  2. 包含4列test_id test_time test_change test_number (自动编号主键,创建时间,减少的库存累加结果 mod 10000,减少的库存)
  3. 取出最后一行的test_change(也可以按时间从大到小排序,取出该记录的test_change)到程序中
  4. test_change + 新减少的库存test_number ,如果大于等于 1000, 发送短信
  5. test_change = test_change mod 1000
  6. 将[0,系统时间,test_change,test_number]插入到tb_test中

一、数据库里创建一个表 tb_test
二、包含4个字段[test_id test_time test_change test_number] (自动编号主键,创建时间,减少的库存累加结果 mod 1000,减少的库存)
三、取出最后一行的test_change(也可以按时间从大到小排序,取出该记录的test_change)到程序中
四、test_change + 新减少的库存test_number ,如果大于等于 1000, 发送短信
五、test_change = test_change mod 1000
六、将[0,系统时间,test_change,test_number]插入到tb_test中

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!