你的鲸鱼根本不应该睡觉。如果你在通话期间没有发出任何声音,Storm会处理对nextTuple的调用之间的睡眠,至少在我熟悉的版本中是1.0.0和向前。
看到 https://github.com/apache/storm/blob/v1.2.2/storm-core/src/clj/org/apache/storm/daemon/executor.clj#L667 以供参考。每次调用等待策略的默认实现都会在可配置的时间间隔内休眠(默认为1ms)。您可以使用控制间隔 https://github.com/apache/storm/blob/v1.2.2/storm-core/src/jvm/org/apache/storm/Config.java#L1886 或完全取代等待策略 https://github.com/apache/storm/blob/v1.2.2/storm-core/src/jvm/org/apache/storm/Config.java#L1879 。
Storm 2.0.0会有一个稍微不同的行为(逐渐延长睡眠时间),但这是基本的想法。
我认为nextTuple的javadoc是误导性的,所以我们应该修改它。我也不确定是什么 Thread.yield 正在做mqtt喷口。看起来它已经存在,因为添加了喷口。如果你在其中一个邮件列表上询问( https://storm.apache.org/getting-help.html ),作者仍在身边,可能知道它为什么存在。
Thread.yield
如果您愿意,可以提出问题 https://issues.apache.org/jira/secure/Dashboard.jspa 解决这个问题:)