- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
您好,与 Apache Storm 合作。我有多个 kafka 主题,我想使用单个 Bolt 解析所有消息(使用并行性来处理负载)。
我想问一下可以吗?以下是我正在尝试的内容
Collection<SpoutSpec<? extends BaseRichBolt>> spouts; // I take this as a method argument
TopologyBuilder topology = new TopologyBuilder();
spouts.forEach(spec -> {
topology.setSpout(spec.getName() + "Spout", new KafkaSpout(spec.getSpoutConfig()), spec.getParallelism());
topology.setBolt("FileBeat-Bolt", new FileBeatMessageBolt(), spec.getParallelism()).shuffleGrouping(spec.getName() + "Spout");
topology.setBolt("Message-Handling-Bolt", new MessageHandlingBolt(), spec.getParallelism()).shuffleGrouping("FileBeat-Bolt");
topology.setBolt("Output-Kafka-Bolt", new ProcessedOutputHandler(), spec.getParallelism()).shuffleGrouping("Message-Handling-Bolt");
});
我的 SpoutSpec 类
public class SpoutSpec<T extends BaseRichBolt> {
private final String name;
private final int parallelism;
private final SpoutConfig spoutConfig;
private final T handler;
}
但是消息不会从 FileBeat-Bolt
发送到其他 Bolt。以下是我发出数据的方式:
JsonNode jsonNode = objectMapper.readValue(input.getString(0), JsonNode.class);
String topic = jsonNode.get("@metadata").get("topic").getTextValue();
String message = jsonNode.get("message").getTextValue();
collector.emit("Message-Handling-Bolt", input, new Values(topic, message));
最佳答案
您的 emit
调用是错误的。第一个参数不是 bolt 名称,而是流名称。当您想要将消息从一个 Bolt 划分为多个数据流时,可以使用流名称。就您而言,您不想拆分流。
collector.emit("Message-Handling-Bolt", input, new Values(topic, message));
将发送到一个名为“Message-Handling-Bolt”的流,并且您在该流上没有任何监听。您的“Message-Handling-Bolt”正在监听默认流。将第一个参数删除为 emit
,或者将您的 Bolt 声明更改为:
topology.setBolt("Message-Handling-Bolt", new MessageHandlingBolt(), spec.getParallelism()).shuffleGrouping("FileBeat-Bolt", "Message-Handling-Bolt");
编辑:回复您的评论:对您来说最简单的解决方案是简单地删除发出调用中的第一个参数:
collector.emit(input, new Values(topic, message));
如果由于某种原因您不想这样做,并且想要显式命名流,则需要声明您的 FileBeatMessageBolt
将发送到 Message-Handling-Bolt
流。您可以将其作为 declareOutputFields
实现的一部分来执行:
@Override
public void declareOutputFields(OutputFieldsDeclarer declarer) {
declarer.declareStream("Message-Handling-Bolt", new Fields(...));
}
关于java - 将数据从一个 Bolt 发送到另一个 Apache Storm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59559676/
平台:Mac OSX Maverics Web 服务器:内置 apache,支持 mod-rewrite,启用 php5_module 重现步骤: cd/Users/用户名/站点/ mkdir bol
如何在 Bolt 中列出分类法中的所有术语?不是应用于记录的术语而是所有现有术语(如标签云或类别列表侧边菜单)? 最佳答案 直接在模板中,可以这样做: {% for category in app.c
我有两个可序列化的类A和B。并且有两种spout A_spout和B_spout。每个spout向bolt C发出并行类。但是方法execute中的元组没有区别,所以我如何区分它们? 最佳答案 每个输
我有一个拓扑,例如由 1 个喷嘴和 4 个 bolt 组成 spout 1 -> bolt A -> bolt B -> bolt C -> bolt D 如果 bolt A 中的某些条件不满足,我们
我正在从 spout 中获取数据。每个 bolt 都会将映射字段插入到我数据库中的不同表中。但是我的数据库表有约束。在我的测试表中,我有两个名为 user-details 和 my-details 的
在我的 Storm 拓扑中,我将一个大的程序逻辑保存在单个 Bolt 中。现在我把大的程序逻辑分成线性排列的小 bolt 。它的性能有什么不同吗? 最佳答案 根据您评论中的描述: In my topo
我正在使用 Bolt.cm 并且在编辑页面或条目时,右侧有一个称为“堆栈”的部分。在 Bolt 网站上,它说 Our Stack functionality contains your latest
我正在使用 Apache Storm,我想知道是否可以像这样用另一个 bolt 组合一个 bolt : public class MyNewBolt extends BaseRichBolt {
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以
将 BoltA 和 BoltB 的输出发送到 BoltC 的最简单方法是什么。我必须使用 Joins 还是有任何更简单的解决方案。 A 和 B 具有相同的字段(ts、metric_name、metri
注意: Bolt1 包含前三个质数(2,3,5)的列表。 Bolt2 包含后三组质数(7,11,13)的列表。 在 Bolt3 中,它只是检查数字是否为素数。 从第一个 bolt 开始,我可以从 sp
bolt 是否可以从不同的 spout/bolt 接收多个输入元组?例如,Bolt C 接收来自 Spout A 的输入元组和来自 Bolt B 的输入元组以进行处理。我应该如何实现它?我的意思是为
得到这个错误 framework not found Bolts for architecture x86_64 逐字逐句地遵循 Facebook 的指南,但我唯一能想到的链接错误发生在框架搜索路径的
我正在尝试整合 Amazon Web SDK适用于 iOS。我手动安装了它(不使用 CocoPods)并且在文档中它说如果你安装了 facebook SDK 不包括 Bolts.framework 因
我正在尝试使用 Facebook/Parse Bolts 框架在 Android 上并行运行多个任务。 documentation for running tasks in parallel似乎表明
Error:(39, 13) Failed to resolve: com.parse.bolts:bolts-android:1.+ 这是我的build.gradle dependencies {
我想创建一个内容类型,其中包含诸如“年月”和“产品类型”之类的选择字段,并根据这两个字段的值自动生成标题字段。 这是因为两个选择字段值的描述性足够,我想减少 CMS 的最终用户为使标题显示在管理界面中
操作系统:Windows 10 专业版 Node :6.1.0 NPM:3.8.6 Gulp:CLI 版本 3.9.1 因此,firebase-bolt 已使用 npm install -g fire
我是 phone gap 的新手。在我的项目中集成了 facebook 插件。运行后显示错误 `Error:A problem occurred configuring root project 'a
我正在尝试构建我的项目。由于此错误,构建失败。 Users/company/Desktop/app/DemoApp/Pods/Bolts/Bolts/iOS/BFAppLink.m:11:9:找不到“
我是一名优秀的程序员,十分优秀!