Advertisement
Guest User

Untitled

a guest
Aug 20th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.13 KB | None | 0 0
  1. @Slf4j
  2. @SpringBootApplication
  3. public class RSocketRequesterApplication {
  4.  
  5.  
  6. public static void main(String[] args) {
  7. SpringApplication.run(RSocketRequesterApplication.class);
  8. }
  9.  
  10. @Bean
  11. RSocket rSocket() {
  12. return RSocketFactory
  13. .connect()
  14. .frameDecoder(PayloadDecoder.ZERO_COPY)
  15. .dataMimeType(MimeTypeUtils.APPLICATION_JSON_VALUE)
  16. .transport(TcpClientTransport.create(7000))
  17. .start()
  18. .block();
  19. }
  20.  
  21. @Bean
  22. RSocketRequester rSocketRequester(RSocket rSocket, RSocketStrategies rSocketStrategies) {
  23. return RSocketRequester.wrap(rSocket, MimeTypeUtils.APPLICATION_JSON,
  24. rSocketStrategies);
  25. }
  26.  
  27. @Component
  28. class CustomerServiceAdapter {
  29.  
  30. private final RSocketRequester rSocketRequester;
  31.  
  32. CustomerServiceAdapter(RSocketRequester rSocketRequester) {
  33. this.rSocketRequester = rSocketRequester;
  34. }
  35.  
  36. Mono<CustomerResponse> getCustomer(String id) {
  37. return rSocketRequester
  38. .route("customer")
  39. .data(new CustomerRequest(id))
  40. .retrieveMono(CustomerResponse.class)
  41. .doOnNext(customerResponse -> log.info("Received customer as mono [{}]", customerResponse));
  42. }
  43.  
  44. Flux<CustomerResponse> getCustomers(List<String> ids) {
  45. return rSocketRequester
  46. .route("customer-stream")
  47. .data(new MultipleCustomersRequest(ids))
  48. .retrieveFlux(CustomerResponse.class)
  49. .doOnNext(customerResponse -> log.info("Received customer as flux [{}]", customerResponse));
  50. }
  51.  
  52. Flux<CustomerResponse> getCustomerChannel(Flux<CustomerRequest> customerRequestFlux) {
  53. return rSocketRequester
  54. .route("customer-channel")
  55. .data(customerRequestFlux, CustomerRequest.class)
  56. .retrieveFlux(CustomerResponse.class)
  57. .doOnNext(customerResponse -> log.info("Received customer as flux [{}]", customerResponse));
  58. }
  59. }
  60.  
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement