为每次发布添加未来的回调可以吗?
Is it fine to add future callback for each publish?
我已经抽象了消息模式(事件)。 Event 有不同的实现,它们作为消息发布。他们还实现了自己的未来回调方法。
@Async
@Override
public void sendAsyncEvent(Event event) {
try {
ListenableFuture<SendResult<String, Event>> future = kafkaTemplate.send(topicName, event);
future.addCallback(event.getFutureCallback());
} catch (Exception e) {
log.error("error", e);
}
}
我的问题是,为每个事件消息添加回调可以吗?恐怕之前添加的回调将保留而不会被删除。我不希望它们堆积在内存中。只是不确定上面的用法是否正确
是的,很好;当没有更多的引用时,回调(以及未来和事件)最终将被垃圾收集。
我已经抽象了消息模式(事件)。 Event 有不同的实现,它们作为消息发布。他们还实现了自己的未来回调方法。
@Async
@Override
public void sendAsyncEvent(Event event) {
try {
ListenableFuture<SendResult<String, Event>> future = kafkaTemplate.send(topicName, event);
future.addCallback(event.getFutureCallback());
} catch (Exception e) {
log.error("error", e);
}
}
我的问题是,为每个事件消息添加回调可以吗?恐怕之前添加的回调将保留而不会被删除。我不希望它们堆积在内存中。只是不确定上面的用法是否正确
是的,很好;当没有更多的引用时,回调(以及未来和事件)最终将被垃圾收集。