监听数据库里的数据 比如手机费,如果没钱了会短信通知。这种用的是什么技术呢,触发器只能完成数据库内操作,不能实现发短信操作吧。那么上层程序是如何监听相应数据的呢。有的说是轮循,那是怎么做的? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有时候可能也没你想得那么复杂:1、统一扣款接口,也就是全系统只有一个接口方法最终负责扣款;2、在每次扣款的时候,检查下余额;3、余额如果不足,向发短信的功能发送个通知的任务(可以用消息队列如JMS)。当然,你通过数据库触发器去维护“欠费记录表”,然后再同另一个批处理程序去轮询该表进行处理也是可以的。 统一接口是种做法。但是我见过一种,程序A向表A中插数据,程序B会对每次增加的数据进行相应的发送处理。这是怎么弄的呢。轮循的做法是什么,不是定时的循环检查吧。另外如果用触发器的话不能同上层程序交互吧。 当然,借助Oracle这类数据库强大的能力,可以通过触发器调用Java代码然后发送JMS啥的也是可以的,但却是非常非常的不推荐。轮询,不是轮循。顾名思义就是定期去数据库里面Select下,看看哪些数据发生了变化,判定方法也很多,比如很有名的“modify_time”字段就往往是为了轮询、数据同步这类需求而诞生的。但从性能角度出发,压力大的系统不太建议直接从生产表中轮询,因为生产表数据一般比较多,轮询开销大容易跟主操作在资源上产生冲突。因此常用的另一种手段是:基于任务的轮询,大体思路如下:1、触发器,负责监听生产表的变更动作,然后同步将变更类型和变更ID写入任务表;2、轮询Java程序,只Select任务表,按顺序取出变更信息,执行后续动作后,删除该记录(或置删除标志位);考虑到任务表规模控制,可以对任务表按时间进行分区,然后按分区truncate,这个效率比delete高几个数量级。 画面ajax可以定时(这个具体要多短,是根据需要设定)查询数据库,数据库有个预警数值。 不知道楼主的数据库是啥,如果是Oracle的话,有个新技术叫做:Database Change Notification允许数据库客户端(比如JDBC)连接到数据库上并注册一个事件监听器,然后监听数据变化的事件,不过总感觉没有自己搞个辅助表记录事件来的安全 =_= javaweb开发问题 郁闷啊~~~hibernate中的saveOrUpdate该怎么用 软件工程试题求解答?求大家给个指导 jsf+hibernate+spring Linux apache+tomcat负载均衡 关于tomcat的设置问题 培训 问一个关于动态执行javabean的问题! 求教weblogic 8.1建立虚拟目录,web站点的详细步骤 关于Double数值相加的问题 用smack的API开发的聊天软件出现问题 stuts 从一个action方法到另一个action方法
1、统一扣款接口,也就是全系统只有一个接口方法最终负责扣款;
2、在每次扣款的时候,检查下余额;
3、余额如果不足,向发短信的功能发送个通知的任务(可以用消息队列如JMS)。当然,你通过数据库触发器去维护“欠费记录表”,然后再同另一个批处理程序去轮询该表进行处理也是可以的。
轮询,不是轮循。顾名思义就是定期去数据库里面Select下,看看哪些数据发生了变化,判定方法也很多,比如很有名的“modify_time”字段就往往是为了轮询、数据同步这类需求而诞生的。但从性能角度出发,压力大的系统不太建议直接从生产表中轮询,因为生产表数据一般比较多,轮询开销大容易跟主操作在资源上产生冲突。因此常用的另一种手段是:基于任务的轮询,大体思路如下:
1、触发器,负责监听生产表的变更动作,然后同步将变更类型和变更ID写入任务表;
2、轮询Java程序,只Select任务表,按顺序取出变更信息,执行后续动作后,删除该记录(或置删除标志位);
考虑到任务表规模控制,可以对任务表按时间进行分区,然后按分区truncate,这个效率比delete高几个数量级。
画面ajax可以定时(这个具体要多短,是根据需要设定)查询数据库,数据库有个预警数值。