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

apache storm单元测试活动拓扑中的bolt

景元徽
2023-03-14

我有一个storm拓扑,它有一个连接到kafka队列的spout,并将元组转发到我的bolt进行处理。我只想对bolt进行单元测试,而不是kafka->spout->bolt中的整个片段。然而,我还想在一个storm拓扑实例中测试bolt,而不仅仅是它的纯功能。原因是bolt实际上将处理后的数据发送到一个cassandra数据库。

所以我实现这一点的一种方法是制作一个测试喷口,将其连接到bolt,并通过测试喷口将测试元组发送到bolt。然而,对于一个测试来说,这似乎是太多的工作了。有没有更好的办法做到这一点?比如在测试中劫持原始喷点来发送一些测试元组?

共有1个答案

谷涵容
2023-03-14

您可以考虑用https://storm.apache.org/releases/0.9.6/javadocs/backtype/storm/testing/fixedtuplespout.html或https://storm.apache.org/releases/0.9.6/javadocs/backtype/storm/testing/feederspout.html来替换Kafka喷注。

使用FixedTupleSpout进行测试的一个好处是它实现了https://github.com/apache/storm/blob/a4afacd9617d620f50cf026fc599821f7ac25c79/storm-client/src/jvm/org/apache/storm/testing/completableSpout.java,因此可以与completeTopology一起使用https://github.com/apache/storm/blob/64e29f365c9b5d3e15b33f33ab64e200345333e4/storm-server/src/main/java/org/apache/storm/testing.java#L405。这可以让您编写最初设置一些元组的测试,运行拓扑直到所有元组都被加密/失败,然后让您断言,例如,数据已写入Cassandra并且所有元组都被加密

这里有一个使用completeTopology的示例https://github.com/xumingming/storm-lib/blob/master/src/jvm/storm/testingapidemo.java#l83。

 类似资料:
  • 我正在为cadence活动功能编写一个单元测试,它使用UUID从联系服务中检索联系人。我想知道我应该把什么样的背景加入到节奏活动中。 这是测试功能。 我收到的错误消息:

  • 关于拓扑结构的说明: 喷口连续向读取螺栓发送元组。 读取bolt过程并将结果发送给下一个bolt等等。 在R bolt中处理tuple1之后还是在readbolt发送tuple1写入bolt之后?

  • 我运行的是一个简单的拓扑结构,它有一个简单的spout,它发出带有两个字段的元组,还有一个bolt,它在execute方法中正好对得上。它们在两台机器中运行。使用此设置和默认配置值,我得到10ms的完整延迟,而执行和处理延迟均为.005ms。我也禁用了日志记录。会有什么问题?暴风版本为1.0。

  • 本文向大家介绍环形拓扑和网格拓扑之间的区别,包括了环形拓扑和网格拓扑之间的区别的使用技巧和注意事项,需要的朋友参考一下 环形拓扑 在环形拓扑中,每个节点都以环形方式连接到其左节点和右节点,信息可以从一个节点流向另一个方向。如果有n个节点,则存在n个链接。如果要添加一个新节点,则整个连接将被中断。 网格拓扑 在网状拓扑中,每个节点使用其自己的专用链接连接到其他节点,并且信息可以从这些链接传播到任何节

  • 我正在运行一个3节点的Storm集群。我们正在提交一个包含10个工作者的拓扑结构,以下是拓扑结构的详细信息 我们每天处理800万到1000万个数据。问题是topolgy只运行了2到3天,而我们在kafka spout中看到了一些失败的元组,没有处理任何消息。当提交新的topolgy时,它工作良好,但在2到3天后,我们又看到了同样的问题。有人能给我们一个解决方案吗。下面是我的storm配置