Submit Search
Upload
Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3
•
34 likes
•
18,358 views
Toshiaki Maki
Follow
Event Driven Microservices with Spring Cloud Stream JJUG CCC Fall 2016 #jjug_ccc #ccc_ab3
Read less
Read more
Technology
Report
Share
Report
Share
1 of 232
Download now
Download to read offline
Recommended
Understanding MicroSERVICE Architecture with Java & Spring Boot
Understanding MicroSERVICE Architecture with Java & Spring Boot
Kashif Ali Siddiqui
Service discovery with Eureka and Spring Cloud
Service discovery with Eureka and Spring Cloud
Marcelo Serpa
AWS IoT Greengrass V2 の紹介
AWS IoT Greengrass V2 の紹介
Amazon Web Services Japan
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...
Toshiaki Maki
RDB開発者のためのApache Cassandra データモデリング入門
RDB開発者のためのApache Cassandra データモデリング入門
Yuki Morishita
そんなトランザクションマネージャで大丈夫か?
そんなトランザクションマネージャで大丈夫か?
takezoe
ドメイン駆動設計とマイクロサービス
ドメイン駆動設計とマイクロサービス
kouki_mitsuishi
Building Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache Kafka
Guido Schmutz
Recommended
Understanding MicroSERVICE Architecture with Java & Spring Boot
Understanding MicroSERVICE Architecture with Java & Spring Boot
Kashif Ali Siddiqui
Service discovery with Eureka and Spring Cloud
Service discovery with Eureka and Spring Cloud
Marcelo Serpa
AWS IoT Greengrass V2 の紹介
AWS IoT Greengrass V2 の紹介
Amazon Web Services Japan
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...
Toshiaki Maki
RDB開発者のためのApache Cassandra データモデリング入門
RDB開発者のためのApache Cassandra データモデリング入門
Yuki Morishita
そんなトランザクションマネージャで大丈夫か?
そんなトランザクションマネージャで大丈夫か?
takezoe
ドメイン駆動設計とマイクロサービス
ドメイン駆動設計とマイクロサービス
kouki_mitsuishi
Building Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache Kafka
Guido Schmutz
20200515 api meetup online #1
20200515 api meetup online #1
kounan13
Architecture: Microservices
Architecture: Microservices
Amazon Web Services
Migration d'une Architecture Microservice vers une Architecture Event-Driven ...
Migration d'une Architecture Microservice vers une Architecture Event-Driven ...
Daniel Rene FOUOMENE PEWO
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦い
ota42y
製造装置データ収集の選択肢 (AWS IoT Deep Dive #5)
製造装置データ収集の選択肢 (AWS IoT Deep Dive #5)
Amazon Web Services Japan
Quarkus入門
Quarkus入門
Norito Agetsuma
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
AdvancedTechNight
Microservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring Cloud
Eberhard Wolff
Microservices Design Patterns
Microservices Design Patterns
Haim Michael
Microservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native Apps
Araf Karsh Hamid
30分でわかるマイクロサービスアーキテクチャ 第2版
30分でわかるマイクロサービスアーキテクチャ 第2版
Naoki (Neo) SATO
Power BI Desktop こんな使い方してみた件
Power BI Desktop こんな使い方してみた件
Teruchika Yamada
20190514 AWS Black Belt Online Seminar Amazon API Gateway
20190514 AWS Black Belt Online Seminar Amazon API Gateway
Amazon Web Services Japan
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1t
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1t
Toshiaki Maki
Spring Cloud Data Flow Overview
Spring Cloud Data Flow Overview
VMware Tanzu
AWS Black Belt Techシリーズ Amazon CloudSearch
AWS Black Belt Techシリーズ Amazon CloudSearch
Amazon Web Services Japan
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話
KEISUKE KONISHI
もしSIerのエンジニアがSRE本を読んだら
もしSIerのエンジニアがSRE本を読んだら
Tomoki Ando
Microservices
Microservices
Trieu Nguyen
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsug
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsug
Toshiaki Maki
ビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streaming
chibochibo
More Related Content
What's hot
20200515 api meetup online #1
20200515 api meetup online #1
kounan13
Architecture: Microservices
Architecture: Microservices
Amazon Web Services
Migration d'une Architecture Microservice vers une Architecture Event-Driven ...
Migration d'une Architecture Microservice vers une Architecture Event-Driven ...
Daniel Rene FOUOMENE PEWO
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦い
ota42y
製造装置データ収集の選択肢 (AWS IoT Deep Dive #5)
製造装置データ収集の選択肢 (AWS IoT Deep Dive #5)
Amazon Web Services Japan
Quarkus入門
Quarkus入門
Norito Agetsuma
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
AdvancedTechNight
Microservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring Cloud
Eberhard Wolff
Microservices Design Patterns
Microservices Design Patterns
Haim Michael
Microservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native Apps
Araf Karsh Hamid
30分でわかるマイクロサービスアーキテクチャ 第2版
30分でわかるマイクロサービスアーキテクチャ 第2版
Naoki (Neo) SATO
Power BI Desktop こんな使い方してみた件
Power BI Desktop こんな使い方してみた件
Teruchika Yamada
20190514 AWS Black Belt Online Seminar Amazon API Gateway
20190514 AWS Black Belt Online Seminar Amazon API Gateway
Amazon Web Services Japan
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1t
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1t
Toshiaki Maki
Spring Cloud Data Flow Overview
Spring Cloud Data Flow Overview
VMware Tanzu
AWS Black Belt Techシリーズ Amazon CloudSearch
AWS Black Belt Techシリーズ Amazon CloudSearch
Amazon Web Services Japan
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話
KEISUKE KONISHI
もしSIerのエンジニアがSRE本を読んだら
もしSIerのエンジニアがSRE本を読んだら
Tomoki Ando
Microservices
Microservices
Trieu Nguyen
What's hot
(20)
20200515 api meetup online #1
20200515 api meetup online #1
Architecture: Microservices
Architecture: Microservices
Migration d'une Architecture Microservice vers une Architecture Event-Driven ...
Migration d'une Architecture Microservice vers une Architecture Event-Driven ...
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦い
製造装置データ収集の選択肢 (AWS IoT Deep Dive #5)
製造装置データ収集の選択肢 (AWS IoT Deep Dive #5)
Quarkus入門
Quarkus入門
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
Microservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring Cloud
Microservices Design Patterns
Microservices Design Patterns
Microservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native Apps
30分でわかるマイクロサービスアーキテクチャ 第2版
30分でわかるマイクロサービスアーキテクチャ 第2版
Power BI Desktop こんな使い方してみた件
Power BI Desktop こんな使い方してみた件
20190514 AWS Black Belt Online Seminar Amazon API Gateway
20190514 AWS Black Belt Online Seminar Amazon API Gateway
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1t
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1t
Spring Cloud Data Flow Overview
Spring Cloud Data Flow Overview
AWS Black Belt Techシリーズ Amazon CloudSearch
AWS Black Belt Techシリーズ Amazon CloudSearch
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話
もしSIerのエンジニアがSRE本を読んだら
もしSIerのエンジニアがSRE本を読んだら
Microservices
Microservices
Viewers also liked
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsug
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsug
Toshiaki Maki
ビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streaming
chibochibo
Java トラブル解析支援ツール HeapStats のご紹介
Java トラブル解析支援ツール HeapStats のご紹介
Shinya Takebayashi
サーバーレスでシステムを開発する時に⼤切な事
サーバーレスでシステムを開発する時に⼤切な事
Hiroyuki Hiki
Spring Cloud Netflixを使おう #jsug
Spring Cloud Netflixを使おう #jsug
Toshiaki Maki
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
Toshiaki Maki
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべこと
Keisuke Nishitani
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本
kazuki kumagai
SIerもはじめる わたしたちのDevOps #jjug_ccc
SIerもはじめる わたしたちのDevOps #jjug_ccc
Mizuki Ugajin
形式手法で捗る!インフラ構成の設計と検証
形式手法で捗る!インフラ構成の設計と検証
y_taka_23
Spring 5に備えるリアクティブプログラミング入門
Spring 5に備えるリアクティブプログラミング入門
Takuya Iwatsuka
形態素解析
形態素解析
Works Applications
3000社の業務データ絞り込みを支える技術
3000社の業務データ絞り込みを支える技術
Ryo Mitoma
WalB: Real-time and Incremental Backup System for Block Devices
WalB: Real-time and Incremental Backup System for Block Devices
uchan_nos
離れた場所でも最高のチームワークを実現する方法 ーサイボウズ開発チームのリモートワーク事例ー
離れた場所でも最高のチームワークを実現する方法 ーサイボウズ開発チームのリモートワーク事例ー
Teppei Sato
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
Jumpei Miyata
あなたの開発チームには、チームワークがあふれていますか?
あなたの開発チームには、チームワークがあふれていますか?
Yusuke Amano
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
Spring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjug
Masatoshi Tada
Viewers also liked
(19)
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsug
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsug
ビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streaming
Java トラブル解析支援ツール HeapStats のご紹介
Java トラブル解析支援ツール HeapStats のご紹介
サーバーレスでシステムを開発する時に⼤切な事
サーバーレスでシステムを開発する時に⼤切な事
Spring Cloud Netflixを使おう #jsug
Spring Cloud Netflixを使おう #jsug
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべこと
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本
SIerもはじめる わたしたちのDevOps #jjug_ccc
SIerもはじめる わたしたちのDevOps #jjug_ccc
形式手法で捗る!インフラ構成の設計と検証
形式手法で捗る!インフラ構成の設計と検証
Spring 5に備えるリアクティブプログラミング入門
Spring 5に備えるリアクティブプログラミング入門
形態素解析
形態素解析
3000社の業務データ絞り込みを支える技術
3000社の業務データ絞り込みを支える技術
WalB: Real-time and Incremental Backup System for Block Devices
WalB: Real-time and Incremental Backup System for Block Devices
離れた場所でも最高のチームワークを実現する方法 ーサイボウズ開発チームのリモートワーク事例ー
離れた場所でも最高のチームワークを実現する方法 ーサイボウズ開発チームのリモートワーク事例ー
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
あなたの開発チームには、チームワークがあふれていますか?
あなたの開発チームには、チームワークがあふれていますか?
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Spring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjug
Similar to Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3
Spring Cloud Servicesの紹介 #pcf_tokyo
Spring Cloud Servicesの紹介 #pcf_tokyo
Toshiaki Maki
How to Architect and Develop Cloud Native Applications
How to Architect and Develop Cloud Native Applications
Sufyaan Kazi
Cloud Foundy Java Client V 2.0 #cf_tokyo
Cloud Foundy Java Client V 2.0 #cf_tokyo
Toshiaki Maki
From Zero to Hero with REST and OAuth2 #jjug
From Zero to Hero with REST and OAuth2 #jjug
Toshiaki Maki
今すぐ始めるCloud Foundry #hackt #hackt_k
今すぐ始めるCloud Foundry #hackt #hackt_k
Toshiaki Maki
Pivotal Cloud Foundry: A Technical Overview
Pivotal Cloud Foundry: A Technical Overview
VMware Tanzu
Pivotal Cloud Foundry: A Technical Overview
Pivotal Cloud Foundry: A Technical Overview
VMware Tanzu
Pivotal microservices spring_pcf_skillsmatter.pptx
Pivotal microservices spring_pcf_skillsmatter.pptx
Sufyaan Kazi
To Microservices and Beyond
To Microservices and Beyond
Matt Stine
Spring Framework 5.0による Reactive Web Application #JavaDayTokyo
Spring Framework 5.0による Reactive Web Application #JavaDayTokyo
Toshiaki Maki
How to build unified Batch & Streaming Pipelines with Apache Beam and Dataflow
How to build unified Batch & Streaming Pipelines with Apache Beam and Dataflow
Daniel Zivkovic
CI/CD best practices for building modern applications - MAD302 - Atlanta AWS ...
CI/CD best practices for building modern applications - MAD302 - Atlanta AWS ...
Amazon Web Services
Product Release Webinar- WSO2 Developer Studio 3.5
Product Release Webinar- WSO2 Developer Studio 3.5
WSO2
Cloud-Native Streaming and Event-Driven Microservices
Cloud-Native Streaming and Event-Driven Microservices
VMware Tanzu
Building CI-CD Pipelines for Serverless Applications
Building CI-CD Pipelines for Serverless Applications
Amazon Web Services
Grow your SharePoint development platform with SharePoint Framework
Grow your SharePoint development platform with SharePoint Framework
Dipti Chhatrapati
Spring on PAS - Fabio Marinelli
Spring on PAS - Fabio Marinelli
VMware Tanzu
Microservices, Containers, Docker and a Cloud-Native Architecture in the Midd...
Microservices, Containers, Docker and a Cloud-Native Architecture in the Midd...
Kai Wähner
Platform as Art: A Developer’s Perspective
Platform as Art: A Developer’s Perspective
Brian Deitte
Manchester geek night pcf 101
Manchester geek night pcf 101
Sufyaan Kazi
Similar to Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3
(20)
Spring Cloud Servicesの紹介 #pcf_tokyo
Spring Cloud Servicesの紹介 #pcf_tokyo
How to Architect and Develop Cloud Native Applications
How to Architect and Develop Cloud Native Applications
Cloud Foundy Java Client V 2.0 #cf_tokyo
Cloud Foundy Java Client V 2.0 #cf_tokyo
From Zero to Hero with REST and OAuth2 #jjug
From Zero to Hero with REST and OAuth2 #jjug
今すぐ始めるCloud Foundry #hackt #hackt_k
今すぐ始めるCloud Foundry #hackt #hackt_k
Pivotal Cloud Foundry: A Technical Overview
Pivotal Cloud Foundry: A Technical Overview
Pivotal Cloud Foundry: A Technical Overview
Pivotal Cloud Foundry: A Technical Overview
Pivotal microservices spring_pcf_skillsmatter.pptx
Pivotal microservices spring_pcf_skillsmatter.pptx
To Microservices and Beyond
To Microservices and Beyond
Spring Framework 5.0による Reactive Web Application #JavaDayTokyo
Spring Framework 5.0による Reactive Web Application #JavaDayTokyo
How to build unified Batch & Streaming Pipelines with Apache Beam and Dataflow
How to build unified Batch & Streaming Pipelines with Apache Beam and Dataflow
CI/CD best practices for building modern applications - MAD302 - Atlanta AWS ...
CI/CD best practices for building modern applications - MAD302 - Atlanta AWS ...
Product Release Webinar- WSO2 Developer Studio 3.5
Product Release Webinar- WSO2 Developer Studio 3.5
Cloud-Native Streaming and Event-Driven Microservices
Cloud-Native Streaming and Event-Driven Microservices
Building CI-CD Pipelines for Serverless Applications
Building CI-CD Pipelines for Serverless Applications
Grow your SharePoint development platform with SharePoint Framework
Grow your SharePoint development platform with SharePoint Framework
Spring on PAS - Fabio Marinelli
Spring on PAS - Fabio Marinelli
Microservices, Containers, Docker and a Cloud-Native Architecture in the Midd...
Microservices, Containers, Docker and a Cloud-Native Architecture in the Midd...
Platform as Art: A Developer’s Perspective
Platform as Art: A Developer’s Perspective
Manchester geek night pcf 101
Manchester geek night pcf 101
More from Toshiaki Maki
From Spring Boot 2.2 to Spring Boot 2.3 #jsug
From Spring Boot 2.2 to Spring Boot 2.3 #jsug
Toshiaki Maki
Concourse x Spinnaker #concourse_tokyo
Concourse x Spinnaker #concourse_tokyo
Toshiaki Maki
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
Toshiaki Maki
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
Toshiaki Maki
Spring Boot Actuator 2.0 & Micrometer
Spring Boot Actuator 2.0 & Micrometer
Toshiaki Maki
Open Service Broker APIとKubernetes Service Catalog #k8sjp
Open Service Broker APIとKubernetes Service Catalog #k8sjp
Toshiaki Maki
Spring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsug
Toshiaki Maki
Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1
Toshiaki Maki
BOSH / CF Deployment in modern ways #cf_tokyo
BOSH / CF Deployment in modern ways #cf_tokyo
Toshiaki Maki
Why PCF is the best platform for Spring Boot
Why PCF is the best platform for Spring Boot
Toshiaki Maki
Zipkin Components #zipkin_jp
Zipkin Components #zipkin_jp
Toshiaki Maki
実例で学ぶ、明日から使えるSpring Boot Tips #jsug
実例で学ぶ、明日から使えるSpring Boot Tips #jsug
Toshiaki Maki
Spring ❤️ Kotlin #jjug
Spring ❤️ Kotlin #jjug
Toshiaki Maki
Managing your Docker image continuously with Concourse CI
Managing your Docker image continuously with Concourse CI
Toshiaki Maki
Short Lived Tasks in Cloud Foundry #cfdtokyo
Short Lived Tasks in Cloud Foundry #cfdtokyo
Toshiaki Maki
Team Support in Concourse CI 2.0 #concourse_tokyo
Team Support in Concourse CI 2.0 #concourse_tokyo
Toshiaki Maki
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Toshiaki Maki
Implement Service Broker with Spring Boot #cf_tokyo
Implement Service Broker with Spring Boot #cf_tokyo
Toshiaki Maki
#jjug_ccc #ccc_gh5 What's new in Spring Framework 4.3 / Boot 1.4 + Pivotal's ...
#jjug_ccc #ccc_gh5 What's new in Spring Framework 4.3 / Boot 1.4 + Pivotal's ...
Toshiaki Maki
Concourse CI Meetup Demo
Concourse CI Meetup Demo
Toshiaki Maki
More from Toshiaki Maki
(20)
From Spring Boot 2.2 to Spring Boot 2.3 #jsug
From Spring Boot 2.2 to Spring Boot 2.3 #jsug
Concourse x Spinnaker #concourse_tokyo
Concourse x Spinnaker #concourse_tokyo
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
Spring Boot Actuator 2.0 & Micrometer
Spring Boot Actuator 2.0 & Micrometer
Open Service Broker APIとKubernetes Service Catalog #k8sjp
Open Service Broker APIとKubernetes Service Catalog #k8sjp
Spring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsug
Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1
BOSH / CF Deployment in modern ways #cf_tokyo
BOSH / CF Deployment in modern ways #cf_tokyo
Why PCF is the best platform for Spring Boot
Why PCF is the best platform for Spring Boot
Zipkin Components #zipkin_jp
Zipkin Components #zipkin_jp
実例で学ぶ、明日から使えるSpring Boot Tips #jsug
実例で学ぶ、明日から使えるSpring Boot Tips #jsug
Spring ❤️ Kotlin #jjug
Spring ❤️ Kotlin #jjug
Managing your Docker image continuously with Concourse CI
Managing your Docker image continuously with Concourse CI
Short Lived Tasks in Cloud Foundry #cfdtokyo
Short Lived Tasks in Cloud Foundry #cfdtokyo
Team Support in Concourse CI 2.0 #concourse_tokyo
Team Support in Concourse CI 2.0 #concourse_tokyo
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Consumer Driven Contractsで REST API/マイクロサービスをテスト #m3tech
Implement Service Broker with Spring Boot #cf_tokyo
Implement Service Broker with Spring Boot #cf_tokyo
#jjug_ccc #ccc_gh5 What's new in Spring Framework 4.3 / Boot 1.4 + Pivotal's ...
#jjug_ccc #ccc_gh5 What's new in Spring Framework 4.3 / Boot 1.4 + Pivotal's ...
Concourse CI Meetup Demo
Concourse CI Meetup Demo
Recently uploaded
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Edi Saputra
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
Rafal Los
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
ThousandEyes
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
Igalia
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
Safe Software
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
wesley chun
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
apidays
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Martijn de Jong
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
Product Anonymous
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
sammart93
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
The Digital Insurer
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
SynarionITSolutions
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Juan lago vázquez
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
The Digital Insurer
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Neo4j
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
wesley chun
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
Boston Institute of Analytics
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
🐬 The future of MySQL is Postgres 🐘
🐬 The future of MySQL is Postgres 🐘
RTylerCroy
Recently uploaded
(20)
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
🐬 The future of MySQL is Postgres 🐘
🐬 The future of MySQL is Postgres 🐘
Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3
1.
‹#›© 2016 Pivotal
Software, Inc. All rights reserved. ‹#›© 2016 Pivotal Software, Inc. All rights reserved. Event Driven Microservices with Spring Cloud Stream Toshiaki Maki (@making) 2016-12-03 JJUG CCC 2016 Fall #jjug_ccc #ccc_ab3 http://bit.ly/making_ccc_a3 (source code)
2.
© 2016 Pivotal
Software, Inc. All rights reserved. Who am I ? • Toshiaki Maki (@making) http://blog.ik.am • Sr. Solutions Architect @Pivotal • Spring Framework enthusiast bit.ly/hajiboot2
3.
© 2016 Pivotal
Software, Inc. All rights reserved. Contents •Spring Cloud Stream (25min) •Advanced Topic (20min) •Spring Cloud Data Flow (2min) •Deploy Stream Apps to Cloud Foundry (3min)
4.
© 2016 Pivotal
Software, Inc. All rights reserved. Microservices Frontend Customer Service Email Service Point Service Post Service
5.
© 2016 Pivotal
Software, Inc. All rights reserved. Microservices Frontend Customer Service Email Service Point Service Post Service HTTP / REST?
6.
© 2016 Pivotal
Software, Inc. All rights reserved. Microservices Frontend Customer Service Email Service Point Service Post Service ABC Service XYZ Service
7.
© 2016 Pivotal
Software, Inc. All rights reserved. Microservices Frontend Customer Service Email Service Point Service Post Service ABC Service XYZ Service
8.
© 2016 Pivotal
Software, Inc. All rights reserved. Microservices Frontend Customer Service Email Service Point Service Post Service ABC Service XYZ Service
9.
© 2016 Pivotal
Software, Inc. All rights reserved. Microservices Frontend Customer Service Email Service Point Service Post Service ABC Service XYZ Service😩
10.
© 2016 Pivotal
Software, Inc. All rights reserved. Microservices Frontend Customer Service Email Service Point Service Post Service ABC Service XYZ Service😩 Orchestration Style
11.
© 2016 Pivotal
Software, Inc. All rights reserved. Read Failure Frontend Customer Service Email Service HTTP GET
12.
© 2016 Pivotal
Software, Inc. All rights reserved. Read Failure Frontend Customer Service Email Service 🔥 HTTP GET
13.
© 2016 Pivotal
Software, Inc. All rights reserved. Read Failure Frontend Customer Service Email Service 🔥 HTTP GET Circuit Breaker
14.
© 2016 Pivotal
Software, Inc. All rights reserved. Read Failure Frontend Customer Service Email Service 🔥 HTTP GET Circuit Breaker
15.
© 2016 Pivotal
Software, Inc. All rights reserved. Write Failure Frontend Customer Service Email Service HTTP POST
16.
© 2016 Pivotal
Software, Inc. All rights reserved. Write Failure 🔥 Frontend Customer Service Email Service HTTP POST
17.
© 2016 Pivotal
Software, Inc. All rights reserved. Write Failure 🔥 Frontend Customer Service Email Service 😲 HTTP POST
18.
© 2016 Pivotal
Software, Inc. All rights reserved. Event Driven MicroServices Frontend Customer Service Email Service Point Service Post Service
19.
© 2016 Pivotal
Software, Inc. All rights reserved. Event Driven MicroServices Frontend Customer Service Email Service Point Service Post Service
20.
© 2016 Pivotal
Software, Inc. All rights reserved. Event Driven MicroServices Frontend Customer Service Email Service Point Service Post Service Subscribe
21.
© 2016 Pivotal
Software, Inc. All rights reserved. Event Driven MicroServices Frontend Customer Service Email Service Point Service Post Service Subscribe Publish
22.
© 2016 Pivotal
Software, Inc. All rights reserved. Event Driven MicroServices Frontend Customer Service Email Service Point Service Post Service Subscribe ABC Service XYZ Service Publish
23.
© 2016 Pivotal
Software, Inc. All rights reserved. Event Driven MicroServices Frontend Customer Service Email Service Point Service Post Service Subscribe ABC Service XYZ Service Publish
24.
© 2016 Pivotal
Software, Inc. All rights reserved. Event Driven MicroServices Frontend Customer Service Email Service Point Service Post Service Subscribe ABC Service XYZ Service 🤓 Publish
25.
© 2016 Pivotal
Software, Inc. All rights reserved. Choreography Style https://www.thoughtworks.com/insights/blog/scaling-microservices-event-stream
26.
‹#›© 2016 Pivotal
Software, Inc. All rights reserved. Spring Cloud Stream
27.
© 2016 Pivotal
Software, Inc. All rights reserved. Spring Cloud Stream • Event-driven microservice framework • Built on battle-tested components (Spring Boot / Spring Integration) • Opinionated primitives for streaming applications • Persistent Pub/Sub • Consumer Groups • Partitioning Support • Pluggable messaging middleware bindings source | processor | sink
28.
© 2016 Pivotal
Software, Inc. All rights reserved. Source | Sink Sink input Source output
29.
© 2016 Pivotal
Software, Inc. All rights reserved. Source | Processor | Sink Source output Processor output input Sink input
30.
© 2016 Pivotal
Software, Inc. All rights reserved. Spring Cloud Stream Applications Twitter Stream Cassandra java -jar twittersource.jar --server.port=8080 --consumerKey=XYZ --consumerSecret=ABC --spring.cloud.stream.bindings. output.destination=ingest Source Sink java -jar cassandrasink.jar --server.port=8081 --spring.cassandra.keyspace=tweet --spring.cloud.stream.bindings. input.destination=ingest
31.
© 2016 Pivotal
Software, Inc. All rights reserved. Spring Cloud Stream Applications Twitter Stream Cassandra java -jar twittersource.jar --server.port=8080 --consumerKey=XYZ --consumerSecret=ABC --spring.cloud.stream.bindings. output.destination=ingest Source Sink java -jar cassandrasink.jar --server.port=8081 --spring.cassandra.keyspace=tweet --spring.cloud.stream.bindings. input.destination=ingest Twitter Stream Cassandraingest
32.
© 2016 Pivotal
Software, Inc. All rights reserved. Message Binders • @EnableBinding • Binder Implementations • Production-Ready • Rabbit MQ • Apache Kafka • Experimental • JMS • Google PubSub
33.
© 2016 Pivotal
Software, Inc. All rights reserved. Programming Model (Sink) @SpringBootApplication @EnableBinding(Sink.class) public class DemoSinkApp { @StreamListener(Sink.INPUT) void receive(Message<String> message) { System.out.println("Received " + message.getPayload()); } public static void main(String[] args) { SpringApplication.run(DemoSinkApp.class, args); } }
34.
© 2016 Pivotal
Software, Inc. All rights reserved. Programming Model (Sink) @SpringBootApplication @EnableBinding(Sink.class) public class DemoSinkApp { @StreamListener(Sink.INPUT) void receive(Message<String> message) { System.out.println("Received " + message.getPayload()); } public static void main(String[] args) { SpringApplication.run(DemoSinkApp.class, args); } } public interface Sink { String INPUT = "input"; @Input(Sink.INPUT) SubscribableChannel input(); }
35.
© 2016 Pivotal
Software, Inc. All rights reserved. Sink Properties (Sink) spring.cloud.stream.bindings.input.destination=demo-strm demo- strm input
36.
© 2016 Pivotal
Software, Inc. All rights reserved. Programming Model (Source) @SpringBootApplication @RestController @EnableBinding(Source.class) public class DemoSourceApp { @Autowired @Output(Source.OUTPUT) MessageChannel output; @GetMapping void send(@RequestParam String text) { output.send(MessageBuilder.withPayload(text).build()); } public static void main(String[] args) { SpringApplication.run(DemoSourceApp.class, args); } }
37.
© 2016 Pivotal
Software, Inc. All rights reserved. Programming Model (Source) @SpringBootApplication @RestController @EnableBinding(Source.class) public class DemoSourceApp { @Autowired @Output(Source.OUTPUT) MessageChannel output; @GetMapping void send(@RequestParam String text) { output.send(MessageBuilder.withPayload(text).build()); } public static void main(String[] args) { SpringApplication.run(DemoSourceApp.class, args); } } public interface Source { String OUTPUT = "output"; @Output(Source.OUTPUT) MessageChannel output(); }
38.
© 2016 Pivotal
Software, Inc. All rights reserved. Programming Model (Source) @SpringBootApplication @RestController @EnableBinding(Source.class) public class DemoSourceApp { @Autowired Source source; @GetMapping void send(@RequestParam String text) { source.output() .send(MessageBuilder.withPayload(text).build()); } public static void main(String[] args) { SpringApplication.run(DemoSourceApp.class, args); } }
39.
© 2016 Pivotal
Software, Inc. All rights reserved. Properties (Source) spring.cloud.stream.bindings.output.destination=demo-strm demo- strm Source output
40.
© 2016 Pivotal
Software, Inc. All rights reserved. Properties (Source) spring.cloud.stream.bindings.output.destination=demo-strm spring.cloud.stream.bindings.output.contentType=applicati on/json demo- strm Source output
41.
© 2016 Pivotal
Software, Inc. All rights reserved. Binder (RabbitMQ) <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-stream-rabbit</artifactId> </dependency> demo- strm
42.
© 2016 Pivotal
Software, Inc. All rights reserved. Binder (Apache Kafka) <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-stream-kafka</artifactId> </dependency> demo- strm
43.
© 2016 Pivotal
Software, Inc. All rights reserved. Sink Pipeline demo- strm input Source output source | sink
44.
© 2016 Pivotal
Software, Inc. All rights reserved. RabbitMQ demo-strm
45.
© 2016 Pivotal
Software, Inc. All rights reserved. RabbitMQ demo-strm Source
46.
© 2016 Pivotal
Software, Inc. All rights reserved. RabbitMQ demo-strm Topic Exchange demo-strm Source
47.
© 2016 Pivotal
Software, Inc. All rights reserved. RabbitMQ demo-strm Topic Exchange demo-strm Source
48.
© 2016 Pivotal
Software, Inc. All rights reserved. RabbitMQ demo-strm Topic Exchange demo-strm Source Sink
49.
© 2016 Pivotal
Software, Inc. All rights reserved. RabbitMQ demo-strm Topic Exchange demo-strm .anonymous.x Queue demo-strm Source Sink
50.
© 2016 Pivotal
Software, Inc. All rights reserved. RabbitMQ demo-strm Topic Exchange demo-strm .anonymous.x Queue demo-strm Source Sink
51.
© 2016 Pivotal
Software, Inc. All rights reserved. Programming Model (Processor) @SpringBootApplication @EnableBinding(Processor.class) public class DemoProcessorApp { @StreamListener(Processor.INPUT) @SendTo(Processor.OUTPUT) void receive(String text) { return "[[" + text + "]]"; } public static void main(String[] args) { SpringApplication.run(DemoProcessorApp.class, args); } }
52.
© 2016 Pivotal
Software, Inc. All rights reserved. Properties (Processor) spring.cloud.stream.bindings.output.destination=my-source spring.cloud.stream.bindings.input.destination=my-source spring.cloud.stream.bindings.output.destination=my-proc spring.cloud.stream.bindings.input.destination=my-proc Source Processor Sink
53.
© 2016 Pivotal
Software, Inc. All rights reserved. Pipeline my- source Source output source | processor | sink Processor output input my-proc Sink input
54.
© 2016 Pivotal
Software, Inc. All rights reserved. Reactive API Support by Reactor @SpringBootApplication @EnableBinding(Processor.class) public class DemoProcessorRxApp { @StreamListener @Output(Processor.OUTPUT) public Flux<String> receive(@Input(Processor.INPUT) Flux<String> stream) { return stream.map(text -> "[[" + text + "]]"); } public static void main(String[] args) { SpringApplication.run(DemoProcessorRxApp.class, args); } }
55.
© 2016 Pivotal
Software, Inc. All rights reserved. Reactive API Support by Reactor @StreamListener @Output(Processor.OUTPUT) public Flux<AverageData> receive(@Input(Processor.INPUT) Flux<SensorData> stream) { return stream.window(Duration.ofSecond(20), Duration.ofSecond(10)) .flatMap(win -> win.groupBy(sensor -> sensor.id)) .flatMap(group -> calcAverage(group)); }
56.
© 2016 Pivotal
Software, Inc. All rights reserved. Stream Core Features •Persistent Pub-Sub •Consumer Group •Partitioning Support
57.
© 2016 Pivotal
Software, Inc. All rights reserved. Persistent Pub-Sub HTTP Average Top Ns1.http s1.ave Message Broker
58.
© 2016 Pivotal
Software, Inc. All rights reserved. Persistent Pub-Sub HTTP Average HDFS Top Ns1.http s1.ave Message Broker
59.
© 2016 Pivotal
Software, Inc. All rights reserved. Persistent Pub-Sub HTTP Average HDFS Top N Fault Detection s1.http s1.ave Message Broker
60.
© 2016 Pivotal
Software, Inc. All rights reserved. Persistent Pub-Sub HTTP Average HDFS Top N Fault Detection s1.http s1.ave Message Broker {"id":1, "temperature":38}
61.
© 2016 Pivotal
Software, Inc. All rights reserved. Persistent Pub-Sub HTTP Average HDFS Top N Fault Detection s1.http s1.ave Message Broker {"id":1, "temperature":38}{"id":1, "temperature":38}
62.
© 2016 Pivotal
Software, Inc. All rights reserved. Persistent Pub-Sub HTTP Average HDFS Top N Fault Detection s1.http s1.ave Message Broker {"id":1, "temperature":38} {"id":1, "temperature":38} {"id":1, "temperature":38}
63.
© 2016 Pivotal
Software, Inc. All rights reserved. Persistent Pub-Sub HTTP Average HDFS Top N Fault Detection s1.http s1.ave Message Broker {"id":1, "temperature": {"id":1, "temperature":38} {"id":1, "temperature":38}
64.
© 2016 Pivotal
Software, Inc. All rights reserved. HTTP Average HDFS Top N Fault Detection s1.http s1.ave Message Broker Average Average HDFS HDFS
65.
© 2016 Pivotal
Software, Inc. All rights reserved. HTTP Average HDFS Top N Fault Detection s1.http s1.ave Message Broker {"id":1, "temperature":38} Average Average HDFS HDFS
66.
© 2016 Pivotal
Software, Inc. All rights reserved. HTTP Average HDFS Top N Fault Detection s1.http s1.ave Message Broker {"id":1, "temperature":38}{"id":1, "temperature":38} Average Average HDFS HDFS
67.
© 2016 Pivotal
Software, Inc. All rights reserved. HTTP Average HDFS Top N Fault Detection s1.http s1.ave Message Broker {"id":1, "temperature":38} {"id":1, "temperature":38} Average Average HDFS HDFS {"id":1, "temperature":38} {"id":1, "temperature":38} {"id":1, "temperature":38} {"id":1, "temperature":38}
68.
© 2016 Pivotal
Software, Inc. All rights reserved. HTTP Average HDFS Top N Fault Detection s1.http s1.ave Message Broker {"id":1, "temperature":38} {"id":1, "temperature":38} Average Average HDFS HDFS {"id":1, "temperature":38} {"id":1, "temperature":38} {"id":1, "temperature":38} {"id":1, "temperature":38} 😩
69.
© 2016 Pivotal
Software, Inc. All rights reserved. Topic Exchange demo-strm demo-strm .anonymous.1 Queue
70.
© 2016 Pivotal
Software, Inc. All rights reserved. Topic Exchange demo-strm demo-strm .anonymous.1 Queue
71.
© 2016 Pivotal
Software, Inc. All rights reserved. Topic Exchange demo-strm demo-strm .anonymous.1 Queue demo-strm .anonymous.2
72.
© 2016 Pivotal
Software, Inc. All rights reserved. Topic Exchange demo-strm demo-strm .anonymous.1 Queue demo-strm .anonymous.2 Consumer Group
73.
© 2016 Pivotal
Software, Inc. All rights reserved. Topic Exchange demo-strm demo-strm .anonymous.1 Queue demo-strm .anonymous.2 spring.cloud.stream.bindings.<channelName>.group=ave Consumer Group
74.
© 2016 Pivotal
Software, Inc. All rights reserved. Consumer Group demo-strm demo-strm .ave QueueTopic Exchange
75.
© 2016 Pivotal
Software, Inc. All rights reserved. Consumer Group HTTP Average HDFS Top N Fault Detection s1.http s1.ave Message Broker Average Average HDFS HDFS group=ave group=hdfs
76.
© 2016 Pivotal
Software, Inc. All rights reserved. Consumer Group HTTP Average HDFS Top N Fault Detection s1.http s1.ave Message Broker Average Average HDFS HDFS group=ave group=hdfs {"id":1, "temperature":38}
77.
© 2016 Pivotal
Software, Inc. All rights reserved. Consumer Group HTTP Average HDFS Top N Fault Detection s1.http s1.ave Message Broker Average Average HDFS HDFS group=ave group=hdfs {"id":1, "temperature":38}{"id":1, "temperature":38}
78.
© 2016 Pivotal
Software, Inc. All rights reserved. Consumer Group HTTP Average HDFS Top N Fault Detection s1.http s1.ave Message Broker Average Average HDFS HDFS group=ave group=hdfs {"id":1, "temperature":38} {"id":1, "temperature":38}
79.
© 2016 Pivotal
Software, Inc. All rights reserved. Consumer Group HTTP Average HDFS Top N Fault Detection s1.http s1.ave Message Broker Average Average HDFS HDFS group=ave group=hdfs {"id":1, "temperature":38} {"id":1, "temperature":38} 🤓
80.
© 2016 Pivotal
Software, Inc. All rights reserved. Consumer Group HTTP Average HDFS Top N Fault Detection s1.http s1.ave Message Broker Average Average HDFS HDFS group=ave group=hdfs {"id":1, "temperature":38} {"id":1, "temperature":38} 🤓 consumer group subscriptions are durable 😁
81.
© 2016 Pivotal
Software, Inc. All rights reserved. Durability demo-strm demo-strm .ave QueueTopic Exchange
82.
© 2016 Pivotal
Software, Inc. All rights reserved. Durability demo-strm demo-strm .ave QueueTopic Exchange
83.
© 2016 Pivotal
Software, Inc. All rights reserved. Durability demo-strm demo-strm .ave Queue 🏀 Topic Exchange
84.
© 2016 Pivotal
Software, Inc. All rights reserved. Durability demo-strm demo-strm .ave Queue 🏀 Topic Exchange
85.
© 2016 Pivotal
Software, Inc. All rights reserved. Durability demo-strm demo-strm .ave Queue 🚑 🏀 Topic Exchange
86.
© 2016 Pivotal
Software, Inc. All rights reserved. Durability demo-strm demo-strm .ave Queue 🚑 🏀 Topic Exchange
87.
© 2016 Pivotal
Software, Inc. All rights reserved. Durability demo-strm demo-strm .ave Queue 🏀 Topic Exchange
88.
© 2016 Pivotal
Software, Inc. All rights reserved. Customer Service Email Service Point Service Post Service Source Sink
89.
© 2016 Pivotal
Software, Inc. All rights reserved. Customer Service Email Service Point Service Post Service Source Sink spring.cloud.stream.bindings.output.destination=customer spring.cloud.stream.bindings.output.contentType=applicatio n/json
90.
© 2016 Pivotal
Software, Inc. All rights reserved. Customer Service Email Service Point Service Post Service Subscribe Source Sink
91.
© 2016 Pivotal
Software, Inc. All rights reserved. Customer Service Email Service Point Service Post Service Subscribe Source Sink group=point-service group=email-service group=post-service
92.
© 2016 Pivotal
Software, Inc. All rights reserved. Customer Service Email Service Point Service Post Service Subscribe Source Sink group=point-service group=email-service group=post-service spring.cloud.stream.bindings.input.destination=customer spring.cloud.stream.bindings.input.group=point-service
93.
© 2016 Pivotal
Software, Inc. All rights reserved. Customer Service Email Service Point Service Post Service Subscribe Source Sink group=point-service group=email-service group=post-service spring.cloud.stream.bindings.input.destination=customer spring.cloud.stream.bindings.input.group=point-service spring.cloud.stream.bindings.input.destination=customer spring.cloud.stream.bindings.input.group=email-service
94.
© 2016 Pivotal
Software, Inc. All rights reserved. Customer Service Email Service Point Service Post Service Subscribe Source Sink group=point-service group=email-service group=post-service spring.cloud.stream.bindings.input.destination=customer spring.cloud.stream.bindings.input.group=point-service spring.cloud.stream.bindings.input.destination=customer spring.cloud.stream.bindings.input.group=email-service spring.cloud.stream.bindings.input.destination=customer spring.cloud.stream.bindings.input.group=post-service
95.
© 2016 Pivotal
Software, Inc. All rights reserved. customer Customer Service output Point Service input Email Service input Post Service input
96.
© 2016 Pivotal
Software, Inc. All rights reserved. customer customer .point- service Queue Consumer Group customer .email- service customer .post- service Topic Exchange
97.
© 2016 Pivotal
Software, Inc. All rights reserved. HTTP Average s1.http Average
98.
© 2016 Pivotal
Software, Inc. All rights reserved. HTTP Average s1.http Average {"id":1, "temperature":38} {"id":2, "temperature":41} {"id":2, "temperature":42} {"id":1, "temperature":37}
99.
© 2016 Pivotal
Software, Inc. All rights reserved. HTTP Average s1.http Average {"id":1, "temperature":38} {"id":2, "temperature":41} {"id":2, "temperature":42} {"id":1, "temperature":37}
100.
© 2016 Pivotal
Software, Inc. All rights reserved. HTTP Average s1.http Average {"id":1, "temperature":38} {"id":2, "temperature":41} {"id":2, "temperature":42} {"id":1, "temperature":37}
101.
© 2016 Pivotal
Software, Inc. All rights reserved. HTTP Average s1.http Average {"id":1, "temperature":38} {"id":2, "temperature":41} {"id":2, "temperature":42} {"id":1, "temperature":37}
102.
© 2016 Pivotal
Software, Inc. All rights reserved. HTTP Average s1.http Average {"id":1, "temperature":38} {"id":2, "temperature":41} {"id":2, "temperature":42} {"id":1, "temperature":37}
103.
© 2016 Pivotal
Software, Inc. All rights reserved. HTTP Average s1.http Average {"id":1, "temperature":38} {"id":2, "temperature":41} {"id":2, "temperature":42} {"id":1, "temperature":37} 😩
104.
© 2016 Pivotal
Software, Inc. All rights reserved. HTTP Average s1.http Average {"id":1, "temperature":38} {"id":2, "temperature":41} {"id":2, "temperature":42} {"id":1, "temperature":37} 😩 Partitioning Support(Stateful Stream)
105.
© 2016 Pivotal
Software, Inc. All rights reserved. HTTP Average s1.http Average {"id":1, "temperature":38} {"id":2, "temperature":41} {"id":2, "temperature":42} {"id":1, "temperature":37} 😩 spring.cloud.stream.bindings.<channelName>.producer.par titionKeyExpression=payload.id Partitioning Support(Stateful Stream)
106.
© 2016 Pivotal
Software, Inc. All rights reserved. Partitioning Support(Stateful Stream) HTTP Average s1.http Average
107.
© 2016 Pivotal
Software, Inc. All rights reserved. Partitioning Support(Stateful Stream) HTTP Average s1.http Average {"id":1, "temperature":38} {"id":2, "temperature":41} {"id":2, "temperature":42} {"id":1, "temperature":37}
108.
© 2016 Pivotal
Software, Inc. All rights reserved. Partitioning Support(Stateful Stream) HTTP Average s1.http Average {"id":1, "temperature":38} {"id":2, "temperature":41} {"id":2, "temperature":42} {"id":1, "temperature":37}
109.
© 2016 Pivotal
Software, Inc. All rights reserved. Partitioning Support(Stateful Stream) HTTP Average s1.http Average {"id":1, "temperature":38} {"id":2, "temperature":41} {"id":2, "temperature":42} {"id":1, "temperature":37}
110.
© 2016 Pivotal
Software, Inc. All rights reserved. Partitioning Support(Stateful Stream) HTTP Average s1.http Average {"id":1, "temperature":38} {"id":2, "temperature":41} {"id":2, "temperature":42} {"id":1, "temperature":37}
111.
© 2016 Pivotal
Software, Inc. All rights reserved. Partitioning Support(Stateful Stream) HTTP Average s1.http Average {"id":1, "temperature":38} {"id":2, "temperature":41} {"id":2, "temperature":42} {"id":1, "temperature":37}
112.
© 2016 Pivotal
Software, Inc. All rights reserved. Partitioning Support(Stateful Stream) HTTP Average s1.http Average {"id":1, "temperature":38} {"id":2, "temperature":41} {"id":2, "temperature":42} {"id":1, "temperature":37} 🤓
113.
© 2016 Pivotal
Software, Inc. All rights reserved. Test Support Source output Sink input
114.
© 2016 Pivotal
Software, Inc. All rights reserved. Test Support Source output Sink input TestSupportBinder
115.
© 2016 Pivotal
Software, Inc. All rights reserved. Test Support <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-stream-test-support</artifactId> <scope>test</scope> </dependency>
116.
© 2016 Pivotal
Software, Inc. All rights reserved. Unit Test (Sink) @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = WebEnvironment.NONE) public class DemoSinkAppTest { @Autowired Sink sink; @Rule public OutputCapture capture = new OutputCapture(); @Test public void testReceive() { sink.input() .send(MessageBuilder.withPayload("foo").build()); assertThat(capture.toString()) .isEqualsTo("Received foo"); } }
117.
© 2016 Pivotal
Software, Inc. All rights reserved. Unit Test (Source) @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = WebEnvironment.NONE) public class DemoSourceAppTest { @Autowired DemoSourceApp app; @Autowired MessageCollector collector; @Autowired Source source; @Test public void testSend() { app.send("foo"); Message<String> message = collector .forChannel(source.output()).poll(); assertThat(message.getPayload()).isEqualsTo("foo"); }}
118.
‹#›© 2016 Pivotal
Software, Inc. All rights reserved. Advanced Topics
119.
© 2016 Pivotal
Software, Inc. All rights reserved. Advanced Topics •Multi Binding •Distributed Tracing •Error Handling •Consumer Driven Contract
120.
© 2016 Pivotal
Software, Inc. All rights reserved. Multi Bindings
121.
© 2016 Pivotal
Software, Inc. All rights reserved. customer Customer Service output Email Service input
122.
© 2016 Pivotal
Software, Inc. All rights reserved. customer Customer Service output Email Service input CustomerCreateEvent
123.
© 2016 Pivotal
Software, Inc. All rights reserved. customer Customer Service output Email Service input
124.
© 2016 Pivotal
Software, Inc. All rights reserved. customer Customer Service output Email Service input CustomerDeleteEvent
125.
© 2016 Pivotal
Software, Inc. All rights reserved. customer Customer Service output Email Service input CustomerDeleteEvent ClassCastException!!
126.
© 2016 Pivotal
Software, Inc. All rights reserved. create Email Service create- input delete- input Customer Service create- output delete- output delete CustomerCreateEvent CustomerDeleteEvent
127.
© 2016 Pivotal
Software, Inc. All rights reserved. public interface CustomerEventSource { String CREATE_OUTPUT = "create-output"; String DELETE_OUTPUT = "delete-output"; @Output(CustomerEventSource.CREATE_OUTPUT) MessageChannel createOutput(); @Output(CustomerEventSource.DELETE_OUTPUT) MessageChannel deleteOutput(); } Multi Bindings
128.
© 2016 Pivotal
Software, Inc. All rights reserved. @Component public class CustomerService { @Autowired CustomerEventSource source; public void create(...) { source.createOutput().send(...); } public void delete() { source.deleteOutput().send(...); } } @SpringBootApplication @EnableBinding(CustomerEventSource.class) public class CustomerServiceApplication { /* ... */ }
129.
© 2016 Pivotal
Software, Inc. All rights reserved. @Component public class CustomerService { @Autowired CustomerEventSource source; public void create(...) { source.createOutput().send(...); } public void delete() { source.deleteOutput().send(...); } } @SpringBootApplication @EnableBinding(CustomerEventSource.class) public class CustomerServiceApplication { /* ... */ } spring.cloud.stream.bindings.create-output.destination =create spring.cloud.stream.bindings.delete-output.destination =delete
130.
© 2016 Pivotal
Software, Inc. All rights reserved. public interface CustomerEventSink { String CREATE_INPUT = "create-input"; String DELETE_INPUT = "delete-input"; @Input(CustomerEventSink.CREATE_INPUT) SubscribableChannel createInput(); @Input(CustomerEventSink.DELETE_INPUT) SubscribableChannel deleteInput(); } Multi Bindings
131.
© 2016 Pivotal
Software, Inc. All rights reserved. @Component public class PointService { @StreamListener(CustomerEventSink.CREATE_INPUT) public void handleCreate(CustomerCreateEvent event) { } @StreamListener(CustomerEventSink.DELETE_INPUT) public void handleDelete(CustomerDeleteEvent event) { } } @SpringBootApplication @EnableBinding(CustomerEventSink.class) public class PointServiceApplication { /* ... */ }
132.
© 2016 Pivotal
Software, Inc. All rights reserved. @Component public class PointService { @StreamListener(CustomerEventSink.CREATE_INPUT) public void handleCreate(CustomerCreateEvent event) { } @StreamListener(CustomerEventSink.DELETE_INPUT) public void handleDelete(CustomerDeleteEvent event) { } } @SpringBootApplication @EnableBinding(CustomerEventSink.class) public class PointServiceApplication { /* ... */ } spring.cloud.stream.bindings.create-input.destination =create spring.cloud.stream.bindings.create-input.group =point-service spring.cloud.stream.bindings.delete-intput.destination =delete spring.cloud.stream.bindings.delete-input.group =point-service
133.
© 2016 Pivotal
Software, Inc. All rights reserved. create create .point- service Queue delete delete .point- service Topic Exchange
134.
© 2016 Pivotal
Software, Inc. All rights reserved. Frontend Customer Service Email Service Point Service Post Service Subscribe ABC Service XYZ Service
135.
© 2016 Pivotal
Software, Inc. All rights reserved. Frontend Customer Service Email Service Point Service Post Service Subscribe ABC Service XYZ Service 🕝
136.
© 2016 Pivotal
Software, Inc. All rights reserved. Frontend Customer Service Email Service Point Service Post Service Subscribe ABC Service XYZ Service🤔 🕝
137.
© 2016 Pivotal
Software, Inc. All rights reserved. Frontend Customer Service Email Service Point Service Post Service Subscribe ABC Service XYZ Service🤔 🕝 🕵 🕵 🕵 🕵 🕵 🕵🕵
138.
© 2016 Pivotal
Software, Inc. All rights reserved. Frontend Customer Service Email Service Point Service Post Service Subscribe ABC Service XYZ Service🤔 🕝 🕵 🕵 🕵 🕵 🕵 🕵🕵
139.
© 2016 Pivotal
Software, Inc. All rights reserved. Frontend Customer Service Email Service Point Service Post Service Subscribe ABC Service XYZ Service🤔 🕝 🕵 🕵 🕵 🕵 🕵 🕵🕵 TraceID, SpanID
140.
© 2016 Pivotal
Software, Inc. All rights reserved. Spring Cloud Sleuth • Distributed tracing solution for Spring Cloud • Interactions with external systems should be instrumented automatically • Capture data simply in logs, or by sending it to Zipkin via RestTemplate / Spring Cloud Stream / ...
141.
© 2016 Pivotal
Software, Inc. All rights reserved. Spring Cloud Sleuth Stream <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-stream-slueth</artifactId> </dependency>
142.
© 2016 Pivotal
Software, Inc. All rights reserved. Spring Cloud Sleuth Stream customer Customer Service output Email Service input
143.
© 2016 Pivotal
Software, Inc. All rights reserved. Spring Cloud Sleuth Stream customer Customer Service output Email Service input sleuth sleuth
144.
© 2016 Pivotal
Software, Inc. All rights reserved. Zipkin Stream Server <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-sleuth-zipkin-stream</artifactId> </dependency>
145.
© 2016 Pivotal
Software, Inc. All rights reserved. Zipkin Stream Server <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-sleuth-zipkin-stream</artifactId> </dependency> @SpringBootApplication @EnableZipkinStreamServer public class ZipkinStreamServer { public static void main(String[] args) { SpringApplication.run(DemoSinkApp.class, args); } }
146.
© 2016 Pivotal
Software, Inc. All rights reserved. Zipkin Stream Server customer Customer Service output Email Service input sleuth sleuth
147.
© 2016 Pivotal
Software, Inc. All rights reserved. Zipkin Stream Server customer Customer Service output Email Service input sleuth sleuth sleuth sleuth
148.
© 2016 Pivotal
Software, Inc. All rights reserved. Zipkin Stream Server customer Customer Service output Email Service input sleuth sleuth sleuth sleuth
149.
© 2016 Pivotal
Software, Inc. All rights reserved. Zipkin Stream Server customer Customer Service output Email Service input sleuth sleuth sleuth sleuth
150.
© 2016 Pivotal
Software, Inc. All rights reserved. Zipkin Stream Server customer Customer Service output Email Service input sleuth sleuth sleuth sleuth TraceID,SpanID TraceID,SpanID
151.
© 2016 Pivotal
Software, Inc. All rights reserved. Zipkin Stream Server customer Customer Service output Email Service input sleuth sleuth sleuth sleuth
152.
© 2016 Pivotal
Software, Inc. All rights reserved. Zipkin UI
153.
© 2016 Pivotal
Software, Inc. All rights reserved. Zipkin UI Trace
154.
© 2016 Pivotal
Software, Inc. All rights reserved. Zipkin UI Trace Span
155.
© 2016 Pivotal
Software, Inc. All rights reserved.
156.
© 2016 Pivotal
Software, Inc. All rights reserved. Error Handling •Depends on the message binder implementation •(Ex.) RabbitMQ binder routes the failed message to the Dead-Letter Queue(DLQ). No mechanism to handle DLQs.
157.
© 2016 Pivotal
Software, Inc. All rights reserved. Dead-Letter Queue Processing demo-strm Topic Exchange demo-strm .ave Source Sink RabbitMQBinder
158.
© 2016 Pivotal
Software, Inc. All rights reserved. Dead-Letter Queue Processing demo-strm Topic Exchange demo-strm .ave Source Sink DLX RabbitMQBinder
159.
© 2016 Pivotal
Software, Inc. All rights reserved. Dead-Letter Queue Processing demo-strm Topic Exchange demo-strm .ave Source Sink DLX RabbitMQBinder spring.cloud.stream.bindings.input.destination=demo-strm spring.cloud.stream.bindings.input.group=ave spring.cloud.stream.rabbit.bindings.input.consumer.autoBi ndDlq=true
160.
© 2016 Pivotal
Software, Inc. All rights reserved. Dead-Letter Queue Processing demo-strm Topic Exchange demo-strm .ave Source Sink DLX demo-strm .ave.dlq RabbitMQBinder spring.cloud.stream.bindings.input.destination=demo-strm spring.cloud.stream.bindings.input.group=ave spring.cloud.stream.rabbit.bindings.input.consumer.autoBi ndDlq=true
161.
© 2016 Pivotal
Software, Inc. All rights reserved. Dead-Letter Queue Processing demo-strm Topic Exchange demo-strm .ave Source Sink DLX demo-strm .ave.dlq RabbitMQBinder
162.
© 2016 Pivotal
Software, Inc. All rights reserved. Dead-Letter Queue Processing demo-strm Topic Exchange demo-strm .ave Source Sink DLX demo-strm .ave.dlq RabbitMQBinder
163.
© 2016 Pivotal
Software, Inc. All rights reserved. Dead-Letter Queue Processing demo-strm Topic Exchange demo-strm .ave Source Sink DLX demo-strm .ave.dlq RabbitMQBinder
164.
© 2016 Pivotal
Software, Inc. All rights reserved. Dead-Letter Queue Processing demo-strm Topic Exchange demo-strm .ave Source Sink DLX demo-strm .ave.dlq RabbitMQBinder 🔥
165.
© 2016 Pivotal
Software, Inc. All rights reserved. Dead-Letter Queue Processing demo-strm Topic Exchange demo-strm .ave Source Sink DLX demo-strm .ave.dlq RabbitMQBinder 🔥 Retry 3 times by default
166.
© 2016 Pivotal
Software, Inc. All rights reserved. Dead-Letter Queue Processing demo-strm Topic Exchange demo-strm .ave Source Sink DLX demo-strm .ave.dlq RabbitMQBinder 🔥 Retry 3 times by default
167.
© 2016 Pivotal
Software, Inc. All rights reserved.
168.
© 2016 Pivotal
Software, Inc. All rights reserved.
169.
© 2016 Pivotal
Software, Inc. All rights reserved.
170.
© 2016 Pivotal
Software, Inc. All rights reserved.
171.
© 2016 Pivotal
Software, Inc. All rights reserved.
172.
© 2016 Pivotal
Software, Inc. All rights reserved. Handling DLQ @Component public class DlqHander { @RabbitListener(queues = "customer.email-service.dlq") public void handle(Message event) { // Re-deliver if you want } }
173.
© 2016 Pivotal
Software, Inc. All rights reserved. DLQ Recovery Center 😛 https://github.com/making-demo-scst/dlq-recover-service
174.
© 2016 Pivotal
Software, Inc. All rights reserved. Trace everything
175.
© 2016 Pivotal
Software, Inc. All rights reserved. customer Customer Service output Point Service input Email Service input Post Service input
176.
© 2016 Pivotal
Software, Inc. All rights reserved. customer Customer Service output Point Service input Email Service input Post Service input
177.
© 2016 Pivotal
Software, Inc. All rights reserved. customer Customer Service output Point Service input Email Service input Post Service input
178.
© 2016 Pivotal
Software, Inc. All rights reserved. customer Customer Service output Point Service input Email Service input Post Service input
179.
© 2016 Pivotal
Software, Inc. All rights reserved. customer Customer Service output Point Service input Email Service input Post Service input
180.
© 2016 Pivotal
Software, Inc. All rights reserved. customer Customer Service output Point Service input Email Service input Post Service input 😗Breaking Change
181.
© 2016 Pivotal
Software, Inc. All rights reserved. customer Customer Service output Point Service input Email Service input Post Service input 😗Breaking Change
182.
© 2016 Pivotal
Software, Inc. All rights reserved. customer Customer Service output Point Service input Email Service input Post Service input 😗Breaking Change
183.
© 2016 Pivotal
Software, Inc. All rights reserved. customer Customer Service output Point Service input Email Service input Post Service input 😗Breaking Change
184.
© 2016 Pivotal
Software, Inc. All rights reserved. customer Customer Service output 😗Breaking Change 😡 😡 😡 😨
185.
© 2016 Pivotal
Software, Inc. All rights reserved. Consumer Driven Contracts •Consumer shares "expectation" with Producer via "Contract" (≈ DSL) •The contract violation should be detected by generated tests on the producer side.
186.
© 2016 Pivotal
Software, Inc. All rights reserved. Consumer Driven Contracts •Consumer shares "expectation" with Producer via "Contract" (≈ DSL) •The contract violation should be detected by generated tests on the producer side. ContractConsumer Producer
187.
© 2016 Pivotal
Software, Inc. All rights reserved. Flow of Consumer Driven Contracts Consumer Producer
188.
© 2016 Pivotal
Software, Inc. All rights reserved. Flow of Consumer Driven Contracts Consumer Producer Contract
189.
© 2016 Pivotal
Software, Inc. All rights reserved. Flow of Consumer Driven Contracts Consumer Producer Contract
190.
© 2016 Pivotal
Software, Inc. All rights reserved. Flow of Consumer Driven Contracts Consumer Producer Contract Acceptance Test
191.
© 2016 Pivotal
Software, Inc. All rights reserved. Flow of Consumer Driven Contracts Consumer Producer Contract Acceptance Test
192.
© 2016 Pivotal
Software, Inc. All rights reserved. Flow of Consumer Driven Contracts Consumer Producer Contract Acceptance Test ✅
193.
© 2016 Pivotal
Software, Inc. All rights reserved. Flow of Consumer Driven Contracts Consumer Producer Contract Acceptance Test Stub ✅
194.
© 2016 Pivotal
Software, Inc. All rights reserved. Flow of Consumer Driven Contracts Consumer Producer Contract Acceptance Test Stub ✅
195.
© 2016 Pivotal
Software, Inc. All rights reserved. Flow of Consumer Driven Contracts Consumer Producer Contract Acceptance Test Stub Unit Test ✅
196.
© 2016 Pivotal
Software, Inc. All rights reserved. Flow of Consumer Driven Contracts Consumer Producer Contract Acceptance Test Stub Unit Test ✅✅
197.
© 2016 Pivotal
Software, Inc. All rights reserved. Spring Cloud Contract •A CDC Solution for JVM apps (especially Spring) •Contract DSL using Groovy •Generates Acceptance test (JUnit or Spock) for producer •Generates Stub for consumer •WireMock Support for REST Test •Messaging Support (Spring Integration, Spring Cloud Stream and Apache Camel)
198.
© 2016 Pivotal
Software, Inc. All rights reserved. Contract DSL Contract.make { label 'create-customer' input { } outputMessage { sentTo('demo-strm') headers({header('Content-Type':'...')}) body('''{"name":"@making"}''') }} shouldCreateCustomer.groovy
199.
© 2016 Pivotal
Software, Inc. All rights reserved. Contract DSL Contract.make { label 'create-customer' input { } outputMessage { sentTo('demo-strm') headers({header('Content-Type':'...')}) body('''{"name":"@making"}''') }} shouldCreateCustomer.groovy Created by Consumer
200.
© 2016 Pivotal
Software, Inc. All rights reserved. Prepare Parent Test Class @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = WebEnvironment.NONE) @AutoConfigureMessageVerifier public abstract class MsgTestBase { @Autowired CustomerService service; protected void create() { service.create("@making"); } }
201.
© 2016 Pivotal
Software, Inc. All rights reserved. Prepare Parent Test Class @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = WebEnvironment.NONE) @AutoConfigureMessageVerifier public abstract class MsgTestBase { @Autowired CustomerService service; protected void create() { service.create("@making"); } } Created by Producer
202.
© 2016 Pivotal
Software, Inc. All rights reserved. Contract DSL Contract.make { label 'create-customer' input { triggeredBy('create()') } outputMessage { sentTo('demo-strm') headers({header('Content-Type':'...')}) body('''{"name":"@making"}''') }} shouldCreateCustomer.groovy
203.
© 2016 Pivotal
Software, Inc. All rights reserved. Contract DSL Contract.make { label 'create-customer' input { triggeredBy('create()') } outputMessage { sentTo('demo-strm') headers({header('Content-Type':'...')}) body('''{"name":"@making"}''') }} shouldCreateCustomer.groovy Updated by Producer
204.
© 2016 Pivotal
Software, Inc. All rights reserved. Generated Acceptance Test public class ContractVerifierTest extends MsgTestBase { // ... @Test public void validate_shouldCreateCustomer() { create(); ContractVerifierMessage res = verifierMessaging .receive("customer"); assertThat(res).isNotNull(); DocumentContext parsedJson = JsonPath.parse( objectMapper.writeValueAsString(res.getPayload())); assertThatJson(parsedJson).field("name") .isEqualTo("@making"); }}
205.
© 2016 Pivotal
Software, Inc. All rights reserved. Spring Cloud Contract Maven Plugin mvn spring-cloud-contract:generateTests mvn spring-cloud-contract:convert mvn spring-cloud-contract:generateStubs Acceptance Test WireMock stub file (only for REST) Stub jar file
206.
© 2016 Pivotal
Software, Inc. All rights reserved. Consumer Side Test @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = WebEnvironment.NONE) @AutoConfigureStubRunner(ids = "com.example:customer- service", workOffline = true) public class PointServiceConsumerTest { @Autowired StubTrigger stubTrigger; // ... @Test public void testCreateCustomer() { stubTrigger.trigger("create-customer"); // assert that the message is received ... } }
207.
© 2016 Pivotal
Software, Inc. All rights reserved. Check sample code •http://bit.ly/making_ccc_a3
208.
© 2016 Pivotal
Software, Inc. All rights reserved. (FYI) CQRS and Event Sourcing • https://spring.io/blog/2016/11/08/cqrs-and-event-sourcing- with-jakub-pilimon • https://github.com/pilloPl/event-source-cqrs-sample
209.
‹#›© 2016 Pivotal
Software, Inc. All rights reserved. Data Microservices with Spring Cloud Data Flow
210.
© 2016 Pivotal
Software, Inc. All rights reserved. Data Microservices $ cat book.txt | tr ' ' '¥ ' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | grep -v '[^a-z]‘ | sort | uniq -c | sort -rn | head
211.
© 2016 Pivotal
Software, Inc. All rights reserved. Data Microservices $ cat book.txt | tr ' ' '¥ ' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | grep -v '[^a-z]‘ | sort | uniq -c | sort -rn | head
212.
© 2016 Pivotal
Software, Inc. All rights reserved. Data Microservices $ cat book.txt | tr ' ' '¥ ' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | grep -v '[^a-z]‘ | sort | uniq -c | sort -rn | head Microservice for each data processing
213.
© 2016 Pivotal
Software, Inc. All rights reserved. Data Microservices $ cat book.txt | tr ' ' '¥ ' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | grep -v '[^a-z]‘ | sort | uniq -c | sort -rn | head Microservice for each data processing
214.
© 2016 Pivotal
Software, Inc. All rights reserved. Data Microservices $ cat book.txt | tr ' ' '¥ ' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | grep -v '[^a-z]‘ | sort | uniq -c | sort -rn | head Microservice for each data processing bound with Message Brokers
215.
© 2016 Pivotal
Software, Inc. All rights reserved. Data Microservices $ cat book.txt | tr ' ' '¥ ' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | grep -v '[^a-z]‘ | sort | uniq -c | sort -rn | head Microservice for each data processing bound with Message Brokers
216.
© 2016 Pivotal
Software, Inc. All rights reserved. Data Microservices $ cat book.txt | tr ' ' '¥ ' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | grep -v '[^a-z]‘ | sort | uniq -c | sort -rn | head Microservice for each data processing bound with Message Brokers on the modern platform such as Cloud Foundry
217.
© 2016 Pivotal
Software, Inc. All rights reserved. Data Microservices $ cat book.txt | tr ' ' '¥ ' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | grep -v '[^a-z]‘ | sort | uniq -c | sort -rn | head Microservice for each data processing bound with Message Brokers on the modern platform such as Cloud Foundry
218.
© 2016 Pivotal
Software, Inc. All rights reserved. Data Microservices $ cat book.txt | tr ' ' '¥ ' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | grep -v '[^a-z]‘ | sort | uniq -c | sort -rn | head Microservice for each data processing bound with Message Brokers on the modern platform such as Cloud Foundry
219.
© 2016 Pivotal
Software, Inc. All rights reserved. Spring Cloud Data Flow • Microservices-based Distributed Data Pipelines •Long Lived Stream Applications •Short Lived Task Applications
220.
© 2016 Pivotal
Software, Inc. All rights reserved. Spring Cloud Data Flow • Microservices-based Distributed Data Pipelines •Long Lived Stream Applications •Short Lived Task Applications Spring Cloud Stream
221.
© 2016 Pivotal
Software, Inc. All rights reserved. Spring Cloud Data Flow • Microservices-based Distributed Data Pipelines •Long Lived Stream Applications •Short Lived Task Applications Spring Cloud Stream Spring Cloud Task
222.
© 2016 Pivotal
Software, Inc. All rights reserved. Spring Cloud Data Flow • Microservices-based Distributed Data Pipelines •Long Lived Stream Applications •Short Lived Task Applications Spring Cloud Stream Spring Cloud Task Orchestration Layer
223.
© 2016 Pivotal
Software, Inc. All rights reserved. Check my slide • http://www.slideshare.net/makingx/data-microservices-with- spring-cloud-stream-task-and-data-flow-jsug-springday
224.
‹#›© 2016 Pivotal
Software, Inc. All rights reserved. Deploy Stream Apps to Cloud Foundry
225.
© 2016 Pivotal
Software, Inc. All rights reserved. Cloud Foundry •https://www.cloudfoundry.org/ •Cloud Native Platform •OSS •Spring ❤ Cloud Foundry •Support Multi IaaS (AWS, Azure, GCP, vSphere, OpenStack)
226.
© 2016 Pivotal
Software, Inc. All rights reserved. Cloud Foundry everywhere Public Cloud Foundry Private Cloud Foundry Development OSS ver Pivotal Cloud Foundry on Premise on Public Cloud
227.
© 2016 Pivotal
Software, Inc. All rights reserved. PCF Dev • https://docs.pivotal.io/pcf-dev • Cloud Foundry on your laptop • Included • Redis / RabbitMQ / MySQL • Spring Cloud Services • Install with cf dev start
228.
© 2016 Pivotal
Software, Inc. All rights reserved. Pivotal Web Services •https://run.pivotal.io/ •Public Cloud Foundry managed by Pivotal •$0.03/GB-hr (≈ ¥2200/GB-month) •$87 of free trial credit.
229.
© 2016 Pivotal
Software, Inc. All rights reserved. Deploy Spring Cloud Stream Apps cf push my-source my-source.jar --no-start cf bind-service my-source my-binder cf start my-source cf push my-sink my-sink.jar --no-start cf bind-service my-sink my-binder cf start my-sink # in case of PCF Dev cf create-service p-rabbitmq standard my-binder # in case of Pivotal Web Services cf create-service cloudamqp lemur my-binder
230.
© 2016 Pivotal
Software, Inc. All rights reserved. Sample Application http://bit.ly/making_ccc_a3 Pivotal Web Services / PCF Dev Frontend Customer Service Email Service Point Service Post ServiceZipkin Server MySQL SendGrid MySQL MySQL DLQ Recovery RabbitMQ HTTP
231.
© 2016 Pivotal
Software, Inc. All rights reserved. Tutorial https://github.com/Pivotal-Japan/spring-cloud-stream-tutorial
232.
© 2016 Pivotal
Software, Inc. All rights reserved. Thanks!! • https://cloud.spring.io/spring-cloud-stream/ • https://cloud.spring.io/spring-cloud-dataflow/ • https://cloud.spring.io/spring-cloud-sleuth/ • http://zipkin.io/ • https://cloud.spring.io/spring-cloud-contract/ • https://projects.spring.io/spring-amqp/ • https://run.pivotal.io/
Download now