当前位置: 首页 > 知识库问答 >
问题:

使用hazelcast计划作业访问本地资源

缪嘉志
2023-03-14

我对Hazelcast很陌生,很可能我错过了一些显而易见的东西,但这里要说。我有一个运行分布式的Java应用程序,每个应用程序都包含自己的Hazelcast实例。我需要Hazelcast调度一个作业,它将以固定的速率运行,但绝不会同时在几个实例上运行。为此,我计划使用IScheduledExecutorService并创建一个实现Runnable和NamedTask的作业。我的问题是作业需要在应用程序上调用方法。我的理解是,作业是由hazelcast序列化和反序列化的,这意味着我不能仅仅创建一个Runnable,并通过它的构造函数向它提供它所需要的对象。那么如何从Hazelcast作业“返回”应用程序对象呢?

例如,假设我有一个普通的旧java Runnable,我希望在Hazelcast执行器中执行它,如下所示:

public class DoStuffJob implements Runnable, NamedTask {
    private MyResource resource;
    
    public DoStuffJob (MyResource resource){
        this.resource = resource;
    }
    
    @Override
    public String getName() {
        return "Do stuff";
    }

    @Override
    public void run() {
        resource.doAllTheStuff();
    }
    
}

提前谢谢你。

共有1个答案

麻和雅
2023-03-14

您可以让您的可运行任务将派生数据放入分布式数据结构--可能是IMAP。然后可以从任何JVM访问它。那能满足你的要求吗?

 类似资料:
  • 我知道这对terracotta的人来说是不公平的,但是有人尝试过使用Hazelcast在集群环境中使用计划作业吗? 我能想象到的最简单的实现是以下架构: 全局黑泽尔铸造锁,用于确保只有一台服务器启动了 Quartz 配置。 以分布式任务的形式运行实际任务。(这可以在以后完成,目前繁重的计划任务将需要处理触发分布式任务) 一旦持有锁的服务器关闭,另一台服务器就会获得锁。 我相信对于已经拥有Hazel

  • 我正在尝试使用dropwizer-日记本来安排工作。在我的预定工作中,我需要访问我的DAO。每当我计划的作业运行时,我都会收到以下错误... 我试图使用这个链接中描述的方法,https://github.com/timmolter/XDropWizard在注入全局对象或配置参数到作业一节中 这是我的申请代码: 这是我预定的工作: 我正在获取DAO,它们不是空的,但它们不绑定到任何会话。我该怎么解决

  • 问题内容: 我有一个必须执行重复任务的Web应用程序,发送消息和警报,我已经使用脚本页面在浏览器中加载它们时执行了这些任务,即http://example.com/tasks.php,我已经在我的Web应用程序的每个页面中都使用iframe表示。 现在,我想将其更改为使用CRON作业,因为第一种方法可能会导致卡纸性能,因此,我如何制作访问http://example.com/tasks.php的C

  • Spring使用Quartz的顺序作业计划 我有三个或更多的工作,这取决于他们各自以前的工作,他们将按顺序运行。如果完成运行,当完成运行。如果在上一个中发生任何错误,则不会激发下一个触发的作业。我试图了解工作链使用石英,但无法通过它。 作业顺序如下所示 提前谢了。

  • 我想建立一个单一的Spring Boot应用程序,同时做多种不同的任务。我在互联网上做了研究,但我找不到任何出路。我来详细说说。我希望每隔一段时间启动一次作业,例如一天一次。我可以用Spring石英来做。我也想在一个专用的互联网地址上听信息。消息将来自Apache Kafka平台。因此,我想将Kafka集成用于Spring框架。它实际上是否适用(始终监听消息并按时执行计划的作业)

  • 我需要两个 cron 工作,我真的不确定我做得是否正确。一个骗局作业应该在每 01.01.xxx 01:00 运行一次,另一个应该在每晚 01:00 运行。 这是正确的表达吗?