feature: Added FanOut/FanIn Pattern (#1800)
* Added FanOut/FanIn Pattern (#8) * #1627 adding fanout-fanin pattern * #1627 adding class diagram image * #1627 adding readme * #1627 adding license * #1627 updating relations * #1627 interrupting the thread * #1627 fixing sonar issues * #1627 fixing sonar issues * #1627 adding more info in README.md * Added FanOut/FanIn (#9) * #1627 adding fanout-fanin pattern * #1627 adding class diagram image * #1627 adding readme * #1627 adding license * #1627 updating relations * #1627 interrupting the thread * #1627 fixing sonar issues * #1627 fixing sonar issues * #1627 adding more info in README.md * #1627 adding programmatic examples in README.md
This commit is contained in:
BIN
fanout-fanin/etc/fanout-fanin.png
Normal file
BIN
fanout-fanin/etc/fanout-fanin.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 39 KiB |
39
fanout-fanin/etc/fanout-fanin.urm.puml
Normal file
39
fanout-fanin/etc/fanout-fanin.urm.puml
Normal file
@ -0,0 +1,39 @@
|
||||
@startuml
|
||||
package com.iluwatar.fanout.fanin {
|
||||
class App {
|
||||
- LOGGER : Logger {static}
|
||||
+ App()
|
||||
+ main(args : String[]) {static}
|
||||
}
|
||||
class Consumer {
|
||||
- sumOfSquaredNumbers : AtomicLong
|
||||
~ Consumer(init : Long)
|
||||
+ add(num : Long) : Long
|
||||
+ getSumOfSquaredNumbers() : AtomicLong
|
||||
}
|
||||
class FanOutFanIn {
|
||||
+ FanOutFanIn()
|
||||
+ fanOutFanIn(requests : List<SquareNumberRequest>, consumer : Consumer) : Long {static}
|
||||
}
|
||||
class SquareNumberRequest {
|
||||
- LOGGER : Logger {static}
|
||||
- number : Long
|
||||
+ SquareNumberRequest(number : Long)
|
||||
+ delayedSquaring(consumer : Consumer)
|
||||
}
|
||||
|
||||
object SquareNumberRequest1
|
||||
object SquareNumberRequest2
|
||||
object SquareNumberRequest3
|
||||
diamond dia
|
||||
}
|
||||
|
||||
App --> FanOutFanIn
|
||||
FanOutFanIn --> "fan out - running in parallel" SquareNumberRequest1
|
||||
FanOutFanIn --> "fan out" SquareNumberRequest2
|
||||
FanOutFanIn --> "fan out" SquareNumberRequest3
|
||||
SquareNumberRequest1 --> "fan in - aggregate using callback" dia
|
||||
SquareNumberRequest2 --> "fan in" dia
|
||||
SquareNumberRequest3 --> "fan in" dia
|
||||
dia --> Consumer
|
||||
@enduml
|
Reference in New Issue
Block a user