如果是oracle应该有job一类的东西,周期为每天,去读取需要发信的用户列表。
不行的可以用操作系统的任务安排去执行一个程序。

解决方案 »

  1.   

    如果是windows可以用任务计划实现
      

  2.   

    推荐单起线程,自己写,因为自己写这个监控系统还可以用来做别的好多事情(慢慢会发现有好多事要做的)无论是厂商给你实现还是,自己实现,都免不了单起一个线程所以,就干脆自己写好了每隔一段时间,就检查一下用户任务列表(可以放在缓存里),有没有要发送的MAIL即可
      

  3.   

    用 Leapiny(没道理)的~~~
      

  4.   

    谢谢大家的意见,我原来就是利用一个线程在后台不停检测,现在主要是用户列表里的email间隔发送时间不同,用户注册发送时间也不同,觉得现在还是线程控制有点麻烦。不过,我觉得 Leapiny(没道理),思路到是不错,实现起来比较简单。计划任务好用吗?我还是想写程序自己控制。希望大家能多多讨论,共同进步!
      

  5.   

    sql server 2k 就带有这样的功能吧
    可以完成
      

  6.   

    用两个线程,一个是扫描发送email表,不停的扫描。
      

  7.   

    楼上的做法太耗费资源了,它的实时性要求并不高,用windows的计划任务好了
      

  8.   

    我 现在觉得还是在表中字段上增加两个是字段,一个是起始时间字段,间隔发送时间字段,然后后台单起一个线程(觉得计划任务应该也可以),不停地检测后台的email列表,根据系统当前的时间,选择需要发送的邮件,不知道大家认为如何?
      

  9.   

    1 尽量不更改原表(需求信息表,称它为info),再建立一个新表(叫sended),两个表通过email相关联。在新表中需要保存时间间隔(根据需求,用秒或分钟作时间单位),上次发送的时间,其它主键,外键就根据需求定。
    2 后台类运行时,先判断是否满足时间要求(通过当前时间、上次发送时间和时间间隔比较),满足条件的就发送email,并保存新的数据到sended表。
    3 不知道你的后台类中的时间间隔是怎么取的。建议写到一个配置文件中,程序运行时从配置文件中取间隔数据,这样以后时间间隔变化不必修改源码。
    4 判断是否满足发送条件的步骤,要独立出来,或者用存储过程,或者写在配置文件中,要考虑以后发生变化的情况。请大家多提宝贵意见
      

  10.   

    至少有三种方面可以实现你的功能(1)从数据库服务器上想办法
    (2)从Java语言上想办法
    (3)从操作系统上想办法但我认为方法2是最灵活的,可靠性最高。
      

  11.   

    寫一個監聽器﹐如用java.util.Observer and java.util.Observable﹐用戶改變設定的動作由一個監聽器捕獲﹐改變Mail的參數。Mail sender包含一個Timer,由Mail提供Task。
    Mail class 除了mail info 外﹐還提供開始時間﹐delay等。
    我正在寫這樣一個東東﹐好了交流一下。
    希望今天完成﹐呵呵
      

  12.   

    还是使用java的消息机制比较好,就是工作量大一点
      

  13.   

    谢谢大家了,
    to : ZHH309(张) ,我的时间间隔也是存在数据库一个表中,因为系统发送邮件只需要批处理方式,所以基本上是半天,一天,一周的单双天,一周等等。修改间隔时间也比较简单!
    to: wuyg(平平),我也认为自己写类会好一点
    to: gavin1976(嘉文),同意,的确是这样 
    to: Nightlee(李晔) ,用户对时间参数的设定是通过在前台页面的选择,然后自动存入数据库的。
    不过还是希望看到你的东东!