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

创建一个Apache Storm spout,它每X秒发出一个元组

归俊
2023-03-14

>

  • 每x秒发出一批元组(或单个元组中的字符串列表)。我如何实现这一点?我读了一些关于Storm Trident的文章,但它的ibatchspout似乎不允许我以特定的时间间隔批量发出元组。

    如果没有新的数据进来,喷口应该怎么做?它不能阻挡线程,因为它是Storm的主线程,对吧?

  • 共有1个答案

    夏振国
    2023-03-14

    您可以实现自己的MQTT spout。例如,请查看MongoSpout。

    重要的部分是NextTuple方法。

    调用此方法时,Storm请求Spout向输出收集器发出元组。这个方法应该是非阻塞的,所以如果喷口没有要发出的元组,这个方法应该返回。nextTuple、ack和fail都是在spout任务的单个线程中的紧密循环中调用的。当没有元组要发出时,有礼貌的做法是让nextTupleHibernate一小段时间(比如一毫秒),这样就不会浪费太多CPU。

    private static final EMISSION_PERIOD = 2000; // 2 seconds
    private long lastEmission;
    
    @Override
    public void nextTuple() {
        if (lastEmission == null ||
                lastEmission + EMISSION_PERIOD >= System.currentMillis()) {
            List<Object> tuple = pollMQTT();
            if (tuple != null) {
                this.collector.emit(tuple);
                return;
            }
        }
        Utils.sleep(50);
    }
    
     类似资料:
    • 问题内容: 现在,我的代码看起来像这样: 根据我所看到的(以及该类的Javadocs),计时器将等待5000毫秒(5秒),触发action事件,等待5000毫秒,再次触发,依此类推。但是,我要获取的行为是计时器已启动,事件已触发,计时器等待5000毫秒,再次触发,然后等待再次触发。 除非我错过了任何事情,否则我不会找到一种创建不会在触发前等待的计时器的方法。有没有一种很好的,干净的方法可以模拟这一

    • 问题内容: 我正在开发Django应用。我有一个API端点,如果需要,它必须执行必须重复几次的功能(直到满足特定条件为止)。我现在如何处理- 虽然我知道这是一种可怕的方法,并且我不应该阻塞2秒钟,但是我不知道该如何解决。 等待4秒后,此方法起作用。但是我想要使循环在后台运行并在some_fn返回True时停止的东西。(此外,可以肯定some_fn将返回True) 编辑- 阅读Oz123的响应给了我

    • 我正在用RxJava在Android中制作计时器。我需要在RxJava中制作一个计时器,以便每秒发出一个可观察的信号。我试过以下方法,但没有成功。有没有想过我做错了什么?

    • 问题内容: 我试图刷新一个表,因为其中的变量不断更新,我想每隔几秒钟重新更新一次。我已经通过为表指定一个ID并为其创建一个div来完成代码。该代码将解释我的实际情况。提前致谢 ! 编辑:添加了变量表和变量刷新器。 但是代码仍然不会重新加载我的表!有什么想法吗?? Test.php JS.php 问题答案: 我想用就是你要找的人 或缩短 如果您想停止刷新数据,例如,说用户长时间使页面处于打开状态 如

    • 我正在开发一个Android 2.3.3应用程序,我需要每X秒运行一个方法。 在iOS,我有NSTmer,但在Android我不知道用什么。 有人向我推荐了Handler;另一个人向我推荐了AramManager,但我不知道哪种方法更适合NSTmer。 这是我想在Android中实现的代码: 我需要像NSTmer这样的东西。 你给我推荐什么?

    • 我正在为某个游戏开发某种“分数跟踪器”应用程序。用户添加一定数量的玩家(当前数量是无限的),然后这些玩家的名字被添加到ArrayList中。然后在下一个活动中,用户必须从一个旋转器中选择一个playername,并为该玩家输入一定数量的“点数”,或者说“分数”。 这是我当前的代码: 现在我要做的是实现一个功能,它将跟踪每个球员的得分。 示例:用户添加了2个玩家,一个叫约翰,一个叫杰克。然后用户给约