Skip to content

Commit e9cf47b

Browse files
author
Zsolt Mészárovics
committed
added reactive collapser example
1 parent 695ee06 commit e9cf47b

File tree

1 file changed

+25
-7
lines changed

1 file changed

+25
-7
lines changed

hystrix-contrib/hystrix-javanica/README.md

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -580,10 +580,18 @@ Suppose you have some command which calls should be collapsed in one backend cal
580580

581581
Example:
582582
```java
583+
584+
/** Asynchronous Execution */
583585
@HystrixCollapser(batchMethod = "getUserByIds")
584-
public Future<User> getUserById(String id) {
586+
public Future<User> getUserByIdAsync(String id) {
585587
return null;
586588
}
589+
590+
/** Reactive Execution */
591+
@HystrixCollapser(batchMethod = "getUserByIds")
592+
public Observable<User> getUserByIdReact(String id) {
593+
return null;
594+
}
587595

588596
@HystrixCommand
589597
public List<User> getUserByIds(List<String> ids) {
@@ -593,13 +601,23 @@ Example:
593601
}
594602
return users;
595603
}
596-
597604

598-
Future<User> f1 = userService.getUserById("1");
599-
Future<User> f2 = userService.getUserById("2");
600-
Future<User> f3 = userService.getUserById("3");
601-
Future<User> f4 = userService.getUserById("4");
602-
Future<User> f5 = userService.getUserById("5");
605+
// Async
606+
Future<User> f1 = userService.getUserByIdAsync("1");
607+
Future<User> f2 = userService.getUserByIdAsync("2");
608+
Future<User> f3 = userService.getUserByIdAsync("3");
609+
Future<User> f4 = userService.getUserByIdAsync("4");
610+
Future<User> f5 = userService.getUserByIdAsync("5");
611+
612+
// Reactive
613+
Observable<User> u1 = getUserByIdReact("1");
614+
Observable<User> u2 = getUserByIdReact("2");
615+
Observable<User> u3 = getUserByIdReact("3");
616+
Observable<User> u4 = getUserByIdReact("4");
617+
Observable<User> u5 = getUserByIdReact("5");
618+
619+
// Materialize reactive commands
620+
Iterable<User> users = Observables.merge(u1, u2, u3, u4, u5).toBlocking().toIterable();
603621
```
604622
A method annotated with ```@HystrixCollapser``` annotation can return any value with compatible type, it does not affect the result of collapser execution, collapser method can even return ```null``` or another stub.
605623
There are several rules applied for methods signatures.

0 commit comments

Comments
 (0)