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

java 8 java.util.function。消费者Rest[重复]

丌官承
2023-03-14

for循环和foreach可以使用break指令。而是Java8消费者。

beans.forEach(v->{
    if (v.id != 100){
        //break or continue
    }
    v.doSomeThing();
});

共有2个答案

羊舌涵涤
2023-03-14

对于Streams,应独立查看每个元素,或尽可能不了解Stream中的其他项目;这部分是因为可以使用并行流。引用Stream JavaDoc:

流管道可以顺序执行,也可以并行执行。此执行模式是流的属性。创建流时,可以选择顺序执行或并行执行。(例如,Collection#stream()创建一个顺序流,而Collection#parallelStream()创建了一个并行流。)执行模式的选择可以通过Stream#sequential()或Stream#parallel()方法进行修改,也可以使用Stream#isParallel(。

因此,在并行流中使用block可能会产生不可预见的后果。

如果您希望能够< code>break或过滤流以便不需要< code>break,最好的方法可能是使用传统的< code>for循环。或者也许你必须完全重新思考你的逻辑,因为流提供了相当多的新的可能性。

别峻
2023-03-14

在Java8中摆脱helper方法会很好,但是如果您真的需要在循环中中断(过滤或设置限制,如@assylias所建议的,是避免这种情况的方法),那么只需编写一个helper方法:

public static <T> void forEach(Iterable<T> iterable, Function<T, Boolean> f)
{
  for (T item : iterable)
  {
    if (!f.apply(item))
    {
      break;
    }
  }
}

然后可以这样使用这个辅助方法:

List<Integer> integers = Arrays.asList(1, 2, 3, 4);

forEach(
  integers,
  (i) -> {
    System.out.println(i);
    return i < 2;
  }
);

打印内容:

1
2
 类似资料:
  • 我们观察到,其中一位消费者多次试图从Kafka主题中选取事件。我们在消费者应用程序方面有以下内容。spring.kafka.consumer.enable auto commit=false

  • 是否有一种方法以编程方式访问和打印使用者滞后偏移,或者说使用者读取的最后一条记录的偏移与某个生产者写入该使用者分区的最后一条记录的偏移之间的位置差。 要知道我的最终目标是将这个值发送到prometheus进行监视,我应该在上面添加哪些语句来得到滞后偏移值?

  • 假设我有一个服务,它通过kafka-rest-proxy来消费消息,并且总是在同一个消费者组上。我们还可以说,它正在消耗一个有一个分区的主题。当服务启动时,它在kafka-rest-proxy中创建一个新的使用者,并使用生成的使用者url,直到服务关闭。当服务重新启动时,它将在kafka-rest-proxy中创建一个新的消费者,并使用新的url(和新的消费者)进行消费。 > 因为kafka每个分

  • 问题是Spring Kafka侦听器只配置了主题名。 我似乎可以让Kafka产生100个消费者来处理来自“队列”(日志)的消息。怎么能做到呢?

  • 我们有一个制作人 在开发过程中,我重新部署了producer应用程序,并做了一些更改。但在此之后,我的消费者没有收到任何消息。我尝试重新启动消费者,但没有成功。问题可能是什么和/或如何解决? 消费者配置: 生产者配置: 编辑2: 5分钟后,消费者应用程序死亡,但以下情况除外:

  • 我花了几个小时想弄清楚发生了什么,但没能找到解决办法。 这是我在一台机器上的设置: 1名zookeeper跑步 我正在使用kafka控制台生成器插入消息。如果我检查复制偏移量(