Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Criando um endpoint de streaming
Search
Felipe Mamud
October 19, 2017
Programming
1
62
Criando um endpoint de streaming
Como criar um endpoint stream utilizando Spring Boot.
Felipe Mamud
October 19, 2017
Tweet
Share
More Decks by Felipe Mamud
See All by Felipe Mamud
Criando sua DSL com jparsec
ftmamud
0
87
Groovy como você nunca viu
ftmamud
0
2.3k
Erlang sem enrolação!
ftmamud
0
130
Gradle: o melhor amigo no build do seu software
ftmamud
0
130
Desenvolvendo software no mundo atual
ftmamud
0
88
Reactive Programming no mundo Java
ftmamud
0
210
Reactive Programming - Brincando com eficiência, composição e assíncronia
ftmamud
1
600
Concorrência em Java: do velho oeste a atualidade
ftmamud
0
120
Java Threads: O que há de errado com elas e como resolver?
ftmamud
0
110
Other Decks in Programming
See All in Programming
GISエンジニアから見たLINKSデータ
nokonoko1203
0
190
Basic Architectures
denyspoltorak
0
150
SwiftUIで本格音ゲー実装してみた
hypebeans
0
550
クラウドに依存しないS3を使った開発術
simesaba80
0
200
Findy AI+の開発、運用におけるMCP活用事例
starfish719
0
1.9k
これならできる!個人開発のすゝめ
tinykitten
PRO
0
140
SQL Server 2025 LT
odashinsuke
0
110
Java 25, Nuevas características
czelabueno
0
120
re:Invent 2025 のイケてるサービスを紹介する
maroon1st
0
160
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
210
Denoのセキュリティに関する仕組みの紹介 (toranoana.deno #23)
uki00a
0
200
LLMで複雑な検索条件アセットから脱却する!! 生成的検索インタフェースの設計論
po3rin
4
1k
Featured
See All Featured
Navigating Weather and Climate Data
rabernat
0
58
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Scaling GitHub
holman
464
140k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
100
Documentation Writing (for coders)
carmenintech
77
5.2k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
2.8k
Six Lessons from altMBA
skipperchong
29
4.1k
Abbi's Birthday
coloredviolet
0
4k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
32
How to build a perfect <img>
jonoalderson
0
4.8k
Being A Developer After 40
akosma
91
590k
So, you think you're a good person
axbom
PRO
0
1.9k
Transcript
Criando um endpoint de streaming DANIEL MEZZATTO @mezzatto FELIPE MAMUD
@mamud
Então vc quer criar um endpoint stream?
AGENDA Stream.of("Motivação", "Desafios", "Endpoint") .map(VivaReal::techTalk) .collect(Collectors.knowledge());
MOTIVAÇÃO • Time to first byte (TTFB) • Deep paging
DESAFIOS • Qual implementação utilizar? ◦ Java? outra linguagem? ◦
Server-Sent Events ◦ StreamingResponseBody* ◦ Custom • ES SearchScroll (com shards) • Sized stream
CONTROLLER @RequestMapping(value = "/{index}/stream", method = GET) public StreamingResponseBody stream(
FilterableApiRequest request, HttpServletResponse httpServletResponse) { httpServletResponse .setContentType("application/x-ndjson;charset=UTF-8"); return out -> searchService.stream(request, out); }
@Component public class ElasticSearchStream { public void stream(OutputStream stream) {
ResponseStream.iterate(stream, new SearchApiIterator<>(esClient, requestBuilder(), scroll -> scroll.setScroll(keepAlive) .actionGet(streamTimeout), count), searchHit -> toBytes(searchHit.getSourceRef())); } } ELASTICSEARCH STREAM
RESPONSE STREAM public static <T> void iterate(OutputStream stream, Iterator<T[]> iterator,
Function<T, byte[]> byteFn) { while (iterator.hasNext()) { for (T hit: iterator.next()) { stream.write(byteFn.apply(hit)); stream.write('\n'); } stream.flush(); } }
SEARCH ITERATOR public class SearchApiIterator<T> implements Iterator<T[]> { @Override public
boolean hasNext() { return hits() > 0 && count <= size; } @Override public T[] next() { T[] result = (T[]) response.getHits().getHits(); response = loop.apply(client.prepareSearchScroll(response.getScrollId())); this.count += hits(); return result; } }|
None