小编G S*_*Ari的帖子

block() 、 subscribe() 和 subscribe(-) 之间有什么区别

Mono.delay(Duration.ofMillis(10)).map(d -> {
            System.out.println(d);
            return d;
        }).block();
Run Code Online (Sandbox Code Playgroud)

输出:0

当我使用subscribe()subscribe(-)方法而不是调用时,无法在控制台上看到任何输出block()

Mono.delay(Duration.ofMillis(10)).map(d -> {
        System.out.println(d);
        return d;
    }).subscribe(System.out::println);
Run Code Online (Sandbox Code Playgroud)

doOnSubscribe(-)难道我们只需要在这个方法之后使用吗Mono.delay(-)

 Mono.delay(Duration.ofMillis(10)).doOnSubscribe(s -> {
        System.out.println("its printing doOnSubscribe");
    }).map(d -> {
        System.out.println(d);
        return d;
    }).subscribe(System.out::println);
Run Code Online (Sandbox Code Playgroud)

输出它正在打印doOnSubscribe

project-reactor spring-webflux

18
推荐指数
1
解决办法
2万
查看次数

事件驱动和领域驱动设计微服务有什么区别?

什么是事件驱动设计和领域驱动设计?
在微服务中使用领域驱动设计、事件驱动设计有什么具体好处。

spring cqrs event-sourcing spring-boot microservices

9
推荐指数
1
解决办法
5898
查看次数

RedisCacheWriter和RedisTemplate有什么区别

JedisConnectionFactory jedisConnectionFactory() {
    RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration("localhost", 6379);
    return new JedisConnectionFactory(redisStandaloneConfiguration);
}
Run Code Online (Sandbox Code Playgroud)

情况1:使用RedisCacheWriter

public RedisCacheManager getRedisCacheManager(RedisConnectionFactory connectionFactory) {
    RedisCacheWriter cacheWriter = RedisCacheWriter.lockingRedisCacheWriter(connectionFactory);
    ClassLoader loader = this.getClass().getClassLoader();
    JdkSerializationRedisSerializer jdkSerializer = new JdkSerializationRedisSerializer(loader);
    SerializationPair<Object> pair = SerializationPair.fromSerializer(jdkSerializer);

    RedisCacheConfiguration cacheConfig = RedisCacheConfiguration.defaultCacheConfig().serializeValuesWith(pair);
    cacheConfig = cacheConfig.entryTtl(Duration.ofSeconds(3600));


    Map<String, RedisCacheConfiguration> initialCacheConfigurations = new HashMap<>();
    initialCacheConfigurations.put("order",cacheConfig.entryTtl(Duration.ofSeconds(1600)));


    RedisCacheManager cacheManager = new RedisCacheManager(cacheWriter, cacheConfig,initialCacheConfigurations);

    return cacheManager;
}

@Bean
public CacheManager cacheManager() {
    RedisCacheManager cacheManager=getRedisCacheManager(jedisConnectionFactory());
    log.info("CacheManager created ");
    return cacheManager;
}
Run Code Online (Sandbox Code Playgroud)

情况2:RedisTemplate

@Bean
RedisTemplate<Object, Object> redisTemplate() {
    RedisTemplate<Object, Object> …
Run Code Online (Sandbox Code Playgroud)

java spring caching redis spring-boot

5
推荐指数
0
解决办法
430
查看次数

需要使用 mapstruct 将两个源对象合并到目标对象中,这里 source1 中的一个字段有 List,而 source2 中的一个字段是 string

public class Source1 {
    private String name;               //srihari  
    private List<String> city_names;   //city_names.add("hyderabad-india")
 }
public class Soruce2 {
    private String name;
    private String city_name;            //hyderabad-india
    private List<String> technologies;   //Arrays.asList("java","mapstruct")
 }
public class Target {
    private String name;            // Result: srihari 
    private String city_names;      // Result: hyderabad-india
    private String technologies;    // Result: java, mapstruct
}`
Run Code Online (Sandbox Code Playgroud)

list 只有一个值意味着 list.size()=1。如果 source1 名称为空,则必须从 source2 中获取。并且目标应包含所有字段,即使这些字段在一个源中不可用

java mapstruct

3
推荐指数
1
解决办法
2274
查看次数

项目反应堆:在订阅和发布的情况下线程将如何创建,流程如何?,堆栈跟踪?

简单的例子来理解线程流程。

  1. [ gshp subscribedOn-1 ] INFOreactor.Flux.FlatMap.1 -onSubscribe ( FluxFlatMap.FlatMapMain )

  2. [ gshppublishOn-7 ] INFOreactor.Flux.FlatMap.1 - onNext(6)

这里reactor.Flux.FlatMap.1对于gshp subscribedOn-1gshppublishOn-7是通用的

当我们运行java时,它从主线程开始,之后会发生什么,它会创建gshp subscribedOn-1还是reactor.Flux.FlatMap.1

  @Test
  public void setUpTestTest() {
      Scheduler scheduler1 = Schedulers.newParallel("gshp subscribedOn", 3);
      Scheduler scheduler2 = Schedulers.newParallel("gshp publishOn", 6);
      Flux<String> flux = Flux.range(1, 200)
                              .flatMap(s-> Flux.just(""+s)
                                               .publishOn(scheduler2)
                                               .concatMap(d->processMessagefluxpause(d, "test")))
                                               .log()
                              .subscribeOn(scheduler1);

    StepVerifier.create(flux).expectNextCount(20).verifyComplete();
}
Run Code Online (Sandbox Code Playgroud)

这意味着什么,流程如何? 在此输入图像描述

java reactive-programming project-reactor spring-webflux

1
推荐指数
1
解决办法
1228
查看次数