简单使用
不做说明,仅记录代码及使用
Code
src/.../reactor/config/ReactorConfig.java
@Component
public class ReactorConfig {
@Bean
Environment env() {
return new Environment();
}
@Bean
@Primary
Reactor pool(Environment env) {
return Reactors.reactor()
.env(env)
.dispatcher(Environment.THREAD_POOL)
.get();
}
@Bean
Reactor loop(Environment env) {
return Reactors.reactor()
.env(env)
.dispatcher(Environment.EVENT_LOOP)
.get();
}
}
src/.../reactor/ReactorListener.java
@Component
public class ReactorListener implements InitializingBean {
@Autowired
Reactor reactor;
@Autowired
UserHandler userHandler;
@Override
public void afterPropertiesSet() throws Exception {
reactor.on($("userHandler"), userHandler);
}
}
src/.../reactor/handler/UserHandler.java
@Component
public class UserHandler implements Consumer<Event<UserDto>> {
@Autowired
UserMapper userMapper;
@Override
public void accept(Event<UserDto> userDtoEvent) {
try {
UserDto user = userDtoEvent.getData();
user = userMapper.getUser(user.getId());
log.info("in userHandler: user={}", user);
} catch(Exception e) {
log.error(String.valueOf(e));
}
}
}
使用
controller
public class UserController {
@Autowired
Reactor reactor;
@Autowired
IUserService userService;
@PostMapping("/get")
public UserDto getUser(Integer uid) {
UserDto userDto = new UserDto();
userDto.setId(uid);
reactor.notify("userHandler", Event.wrap(userDto));
return userService.getUser(uid);
}
}