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

不是流TEXT_EVENT_STREAM_VALUE

施彬彬
2023-03-14

我对反应式编程和spring webflux还不熟悉,我想试试MediaType。TEXT\u EVENT\u STREAM\u VALUE,因此我有以下代码:

@GetMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<Menu> streamAllAvailableMenu() {
    return menuService.findAll();
}

我对结果的期望是,我在浏览器中调用这个API(使用浏览器的原因不是所有客户端都支持实时流),当我在mongob中更改我的数据时,它应该会立即在我的浏览器中反映更改,就像使用web套接字技术的实时流,但实际上它并没有改变任何东西。

我是不是误解了这个分流机制,还是我遗漏了什么?

我正在使用完全反应式堆栈:

Spring webflux 
Netty
Spring Data MongoDB Reactive

共有1个答案

明松
2023-03-14

您所描述的用例不在websocket上运行(而是使用服务器发送事件的普通HTTP)。为了实现您想要做的事情,您需要利用Spring Data MongoDB中的可裁剪光标支持。

为此,您需要调整存储库定义,如下所示:

public interface PersonRepository extends ReactiveMongoRepository<Person, String> {

  @Tailable
  Flux<Person> findByFirstname(String firstname);

}
 类似资料:
  • 我使用包。当我编写''函数时,例如、等,会出现此错误消息。 错误:IllegalArgumentException(Java):您的InputStream既不是OLE2流,也不是OOXML流 在使用这个函数之前,我按照http://www.r-bloggers.com/get-r-and-java-1-8-to-work-cogether-on-osx/link的方式对R和Mac OS X之间的崩

  • 如果我的API提供了一个流,客户端是否有办法修改基础集合? 例如: 客户端是否可以调用并以某种方式修改的内容?

  • 我想读取Excel文件,这些文件以的形式通过REST传递。为此,我有类: 如果我用这个来运行这个: 很好用。但是,如果我将这个类与一起使用,来自over REST的 我包装流是因为如果我不这样做,我会得到这个异常:。我从这里得到的。 难道不能使用Apache POI和REST中的流来读取Excel文件吗?还是我做错了什么?

  • 我想把这个列表收集到两张地图中(如果可能的话,也可以在一张地图中) 一个映射应该将映射到用户玩过的游戏数量--基本上是具有状态的游戏 另一个映射应该将存储到所有游戏计数。它看起来像这样 有没有一种方法可以在块内实现,而不是使用?

  • 在Java 8中,我越来越多地用替换返回值。 所以我曾经有: 我现在使用: 我对此的论点是: 它强制执行基础列表的不变性。 它隐藏了存在基础列表的事实。之后可以将其更改为集合或其他结构,而无需更改方法签名 它很好地封装了该方法的用户希望对项进行处理,而不是对列表进行处理 如果需要,它可以在以后进行简单的并行化 事实上,现在,在我的代码中,返回<code>列表 显然,其中一些可以通过不可变集合来实现