【发布时间】:2021-03-13 09:47:24
【问题描述】:
我正在尝试为我的项目应用 Redisson 功能作为消息代理,但我有一个问题。是否可以将 Redisson 推送到异步接收到的消息?我创建了一个小例子,从不同的 URL 发送了 4 条消息。我预计,Redisson 会异步处理它们,但它会一一进行。 这里是实现:
public class RedisListenerServiceImpl implements MessageListener<String> {
private static final Logger log = LoggerFactory.getLogger(RedisListenerServiceImpl.class);
private final ObjectMapper objectMapper = new ObjectMapper();
@Override
public void onMessage(CharSequence channel, String stringMsg) {
log.info("Message received: {}", stringMsg);
MessageDto msg;
try {
msg = objectMapper.readValue(stringMsg, MessageDto.class);
} catch (final IOException e) {
log.error("Unable to deserialize message: {}", e.getMessage(), e);
return;
}
try {
//Do my stuff
} catch (Exception e) {
log.error("Unable to get service from factory: {}", e.getMessage(), e);
}
}
}
还有配置:
@Configuration
public class RedisListenerConfig {
@Autowired
public RedisListenerConfig(RedissonClient redisClient,
MessageListener redisListenerService,
@Value("${redis.sub.key}") String redisSubKey) {
RTopic subscribeTopic = redisClient.getTopic(redisSubKey);
subscribeTopic.addListenerAsync(String.class, redisListenerService);
}
}
【问题讨论】:
-
嘿,帮帮忙 - 看看多线程示例stackoverflow.com/questions/66485053/…
标签: java multithreading asynchronous redis redisson