最多发10次? 是永久性的还是当前回话中允许发10次?? 如果是前者需要保存数据库中,后者只需要在session中判断一下。
然后关于设置 多少分钟分钟发一次,这个配置信息可以放在配置文件中,也可以存储在数据库中。   
至于限制多少分钟发送一次可以将所有的发送记录记录一下,然后获取最后一个发送的时间与当前发送的时间比较一下,如果小于配置的时间分钟,那么不允许发送,反之允许发送。。

解决方案 »

  1.   

    你这个和定时没什么关系好么。你是限制用户的发布频率以及次数。session里面判断吧。前台也可以先简单判断下
      

  2.   

    用户设置好了某一条信息 5分钟发布一次 一共10次 发布完了就不发送了 即时关闭web页面退出了 也发送
      

  3.   


    服务端获取登录用户的,每次发布index++一次,这个可以定义在外面,如果index >= 10 就不能发了
      

  4.   

    我想使用quartz 现在已经做好了 在用户插入数据时 触发这个定时任务 (设定了3分钟执行一次 一共执行五次 结束) 但是不知道怎么获取当前插入的数据进行重复插入 或者 能获取当前触发任务的用户也行相关代码片段 :
    1、Action插入数据后执行:
    Calendar calendar = Calendar.getInstance();
    calendar.add(Calendar.MINUTE, 3 * 5);//3分钟每次*5次 = 15分钟后结束
    SchedulerManager.updateTime("0 3 * * * ?" , calendar.getTime());
    2、SchedulerManager
    //修改定时器执行时间
    //dotime 配置文件里面 - 是配置jobDetail和CronExpression的
    public static void updateTime(String expression,Date endDate){
    try {
    /*
    * 通过Scheduler.getTrigger("truggerName","GroupName")得到CronTriggerBean
    * 通过setCronExpression方法设置时间
    * setEndTime(endDate);
    * */
    CronTriggerBean trigger = (CronTriggerBean) scheduler.getTrigger("dotime", Scheduler.DEFAULT_GROUP);   
    trigger.setCronExpression(expression);
    trigger.setEndTime(endDate);
    System.out.println(trigger.getName() + ":"+ trigger.getCronExpression());
    scheduler.rescheduleJob("dotime", Scheduler.DEFAULT_GROUP, trigger);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    3、spring 配置
    <!-- 定时任务START -->

    <!-- 指定job类 -->
    <bean id="quartjob" class="com.hjl.action.WebAction" ></bean> <!-- 指定Method和job -->
    <bean id="objAndmethod"
    class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean" lazy-init="false">
    <property name="targetObject" ref="quartjob" /> <!-- 调用的job -->
    <property name="targetMethod" value="work" /> <!-- 调用的Method -->
    <property name="concurrent" value="false"/>
    </bean>

    <!-- 定义CronExpression表达式 以及jobDetail-->
    <bean id="dotime" class="org.springframework.scheduling.quartz.CronTriggerBean" lazy-init="false">
    <property name="jobDetail">
    <ref bean="objAndmethod" />
    </property>
    <property name="cronExpression">
    <!-- 默认5秒钟执行一次 -->
    <value>10,15,20,25,30,35,40,45,50,55 * * * * ?</value>
    </property>
    </bean>

    <!-- 管理类 如果将lazy-init='false'那么容器启动就会执行调度程序  -->
    <bean id="startQuartz" lazy-init="false" autowire="no"
    class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers" ref="dotime" />
    <property name="autoStartup" value="false"/>
    </bean>

    <!-- 注入scheduler -->
    <bean id="updatetime" class="com.hjl.task.SchedulerManager" lazy-init="false">
    <property name="scheduler" ref="startQuartz" />
    </bean>
    <!-- 定时任务 END -->
    4、就是调用的这个work方法了
    <property name="targetMethod" value="work" /> <!-- 调用的Method -->
    但是在这个方法中不知道怎么获取当前触发任务的用户 或者 当前插入的数据 哪位大神给个提示....
      

  5.   

    Quartz  应该可以帮你解决哦
      

  6.   

    谢谢大家的关注 解决了
    还有点新的小问题 自己在琢磨琢磨就可以了 
    最终 我在public static void updateTime(String expression,Date endDate,Map 我要的数据){}
    <bean id="quartjob" class="com.hjl.action.WebAction" >
        <property name="scheduler" ref="startQuartz"></property><!-- 在把这个注入进去 -->
    </bean>在work中在获取这个 trigger get到我要的数据就行了剩下的问题就是 新的任务执行的时候 ,其他用户未结束的任务没到执行时间 一样会执行。
    我在研究研究 实在不行就用另一个办法先解决了 慢慢在研究可能一开始我没说明白 ,我要的效果是 用户设定几分钟自动重发自己刚发过的数据 不用用户操作 就算退出了也会操作