使用java工具的类似Sidekiq的队列?
我希望有一个工作队列,其行为几乎与ruby的sidekiq完全相同(它不需要使用Redis,但它可以——我就是不能使用ruby——甚至Jruby也不行)。基本上,我希望能够创建使用一些参数运行的作业,并由工作池执行这些作业。工作人员将使用hibernate做一些工作,因此我认为Spring集成可以使事情变得更简单。Spring集成已经完成 入站消息驱动适配器当前不支持并发;我们使用了一个复合适配器,它包装了一组使用java工具的类似Sidekiq的队列?,java,queue,message-queue,spring-integration,sidekiq,Java,Queue,Message Queue,Spring Integration,Sidekiq,我希望有一个工作队列,其行为几乎与ruby的sidekiq完全相同(它不需要使用Redis,但它可以——我就是不能使用ruby——甚至Jruby也不行)。基本上,我希望能够创建使用一些参数运行的作业,并由工作池执行这些作业。工作人员将使用hibernate做一些工作,因此我认为Spring集成可以使事情变得更简单。Spring集成已经完成 入站消息驱动适配器当前不支持并发;我们使用了一个复合适配器,它包装了一组RedisQueueMessageDrivenEndpoint 或者您可以使用Rabb
RedisQueueMessageDrivenEndpoint
或者您可以使用RabbitMQ;它的Spring集成适配器确实支持并发
编辑
总线已提取到。Spring Framework具有
ThreadPoolTaskExecutor
。你可以在课堂上使用它,如下所示
@Autowired
ThreadPoolTaskExecutor executor;
ThreadPoolTaskExecutor在投入使用之前需要设置属性。PostConstruct将在依赖注入之后执行,因此我们可以在那里设置ThreadPoolExecutor的属性
@PostConstruct
public void init() {
executor.setCorePoolSize(5);
executor.setMaxPoolSize(10);
executor.setQueueCapacity(25);
}
然后您可以开始使用executor,如下所示
executor.execute(new EmailtoCustomerTask("zhw@gmail.com"));
成为任务所需的唯一要求是实现可运行接口
private class EmailtoCustomerTask implements Runnable
Sidekiq是一个完整的框架,提供了很多开箱即用的东西,我不认为指向spring集成为自己写东西是一个答案,但这不是一个好的答案。回答:在这种情况下,不应该接受这样的事情。我没有把他引向那个方向。他特别询问了SI
我认为Spring集成可以让事情变得更简单。
阅读标题。我就是不能使用ruby
。好吧,但它仍然觉得答案是:“我想要一个工作队列,其行为几乎与ruby的sidekiq完全相同”与使用此库自行实现不完全相同。:-)@与SpringXD中的RedisMessageBus
实现链接的GaryRussell现在已经失效。我很好奇看到这段代码,因为我正在寻找实现一个Java Sidekiq worker,在我们将大多数服务迁移到Java时,它可以与我们的Ruby worker一起工作。我在里面闲逛的时候没看到它,它被弃用了吗?