草庐IT

任务队列

全部标签

Java:一个去重的延时队列

大家好,我有一个系统(源)需要在某些对象发生变化时异步通知另一个系统(目标)。不同之处在于,源系统可能会在短时间内多次改变单个对象(更新非常“突发”),在这种情况下,理想的情况是只通知目标系统一次,并通知目标系统的最终状态对象。我的想法是为此在ThreadPoolExecutor之前使用某种时间延迟的重复数据删除队列。这个队列将:将项目保留在队列中的时间最短(理想情况下配置为比典型突变爆发的持续时间稍长)如果重复项(由对象的标识符定义)入队,则替换现有对象。然而,该项目应该保留其在队列中的原始位置(以避免任何一个项目永远被撞到队列的后面-在某些时候我们需要发送通知,即使另一个项目会暂时

java - AWS us-east 中基于 Java 的应用程序的托管消息队列?

我正在寻找一个消息队列即服务,它........托管在AWSus-east..提供真正的PubSub(不是轮询!)..可用于生产..提供高可用性..有一个很好的Java客户端我只找到了CloudAMQP(仍处于测试阶段),AppEngineTaskQueue(不是AWS),SQS(仅轮询),RedisToGo(没有高可用性?-twitter流似乎充满问题)和IronMQ(仅轮询)。我错过了什么? 最佳答案 您应该检查一种可用的开放式PaaS(例如Cloudify、OpenShift或Cloudfoundry),使用此类PaaS可以轻

java - 在 Java EE 5 (JBoss) 平台上启动计划任务的正确方法是什么?

我需要运行一个简单的计划任务,每200毫秒启动一次并做一些简单的事情。Executors.newSingleThreadScheduledExecutor()是在JBoss上获取预定执行程序服务的正确方法吗?据说不建议在JavaEE平台上生成非托管线程。看起来这个线程将是一个非托管线程。另一方面,我不想为这么简单的事情声明MBean等。编辑有org.jboss.resource.work.JBossWorkManager但我找不到计划工作的例子。 最佳答案 调用Executors.newSingleThreadScheduledEx

java - 如何停止使用 spring 任务安排的作业

我已经实现了一个示例spring计划任务,其applicationContext如下,我怎样才能停止这个调度方法? 最佳答案 将ThreadPoolTask​​Scheduler注入(inject)到另一个bean中,并调用shutdown()。如果这是NotAcceptable,您可以配置cronbean来接受一个标志。例如:publicclassJob(){privatefinalAtomicBooleanstop=newAtomicBoolean(false);publicvoidshow(){if(stop.get()){r

Java EE 计划任务

我需要安排一个任务在Weblogic10.3服务器上定期运行(例如每6小时一次,或者每天中午12点)。该任务基本上是从数据库中检索一些数据并使用它执行一些业务逻辑。实现此目标的最佳方法是什么?我搜索了互联网,找到了一些解决方案,例如:使用定时器服务。工作经理。EJB计时器。顺便说一句,我仍在学习JavaEE,所以这可能是一个基本问题,或者我遗漏了什么。 最佳答案 在JavaEE容器下运行时,应避免使用JDK的标准计时器功能。您应该改用EJB计时器;优先于任何专有解决方案(我认为工作管理器是WebLogic专有的)。从这里开始:htt

java - 队列<整数> q = new LinkedList<整数>()

这里是ananswerto"HowdoIinstantiateaQueueobjectinjava?",Queueisaninterface.Youcan'tinstantiateaninterfacedirectlyexceptviaananonymousinnerclass.Typicallythisisn'twhatyouwanttodoforacollection.Instead,chooseanexistingimplementation.Forexample:Queueq=newLinkedList();orQueueq=newArrayDeque();Typicallyy

java - 有成对的执行相同任务的静态方法和实例方法吗?

在开发一个二维vector类作为数学库的一部分时,出于风格和可用性的原因,我正在考虑使用静态方法和实例方法对。也就是说,两个等价的函数,但一个是静态的和非变异的,另一个是实例化的和变异的。我知道我不是第一个考虑这个问题的人(例如,参见here),但我还没有找到任何直接解决这个问题的信息。拥有静态和实例方法对的优点:有些人更喜欢使用其中一种,在某些情况下,能够进行选择会使代码更易于阅读。这意味着当同时提供静态方法和实例方法时,静态方法不会发生变化。这可以使调用代码更加清晰,例如:someVector=Vector2d.add(vec1,vec2);someVector=(newVecto

java - spring batch 在作业存储库和实际任务之间使用不同的事务管理器

我使用SpringBatch使用2个(可能更多,为简单起见假设2个)数据库。一个用于存储所有作业数据(所有BATCH_*表)。另一个用于实际运行我的业务逻辑数据。有些事情我不太明白。当我声明我的JobRepository时,我已经指定了我的TransactionManager,为什么我必须在我的tasklet上再做一次?(我不是故意使用默认名称的)我目前正在为tasklet提供与我的JobRepository相同的TrasactionManager,它管理与我在步骤中所做的不同的连接。这是否意味着我在作者或读者内部进行了自己的事务管理?如果#2为真,HowdoesSpringBatch

java - JMS/HornetQ = 如何从客户端以编程方式创建 JMS 队列?

我知道可以通过hornetq-jmx.xml配置文件在HornetQ中创建JMS队列。但我想从客户端执行此操作?我试过:HornetQJMSClient.createQueue(queueName);但这似乎没有创建队列(在hornetq服务器上)?当我尝试为此队列创建消费者时,我总是会收到一个队列未知的异常。如果能提供有关如何从客户端创建JMS队列的建议,我将不胜感激。(我根本不想在客户端或服务器上使用JNDI,如果可能的话)。更新:我不介意使用任何HornetQs核心API(与JMSAPI相对)从客户端创建队列。我的问题是:是否有任何方法可以从客户端创建队列(使用JMSApis或使

java - 从 ant 构建文件中以编程方式检索某些任务

我有一个导入其他antxml文件的build.xml。我想从中获取所有javac任务,这样我就可以看到为这些任务设置了什么类路径(javac用于多个目标)。我想出了以下代码(简化了一点):publicstaticvoidmain(String[]args)throwsException{Projectproject=newProject();project.init();Stringbuild="build.xml";FilebuildFile=newFile(build);ProjectHelper.configureProject(project,buildFile);Hashta