gpt4 book ai didi

java - 在什么情况下 ApplicationEventPublisher.publishEvent 不会触发?

转载 作者:行者123 更新时间:2023-12-01 16:59:26 25 4
gpt4 key购买 nike

我正在尝试构建一个 DiscoveryClient,我希望它在路线发生更改时触发一个事件。我正在使用

publisher.publishEvent(new InstanceRegisteredEvent<>(this, "serviceName"));

但是,即使是同一个对象,该事件实际上也不会触发。我怀疑这是因为它是一个不同的线程,但 @Scheduled 也从不同的线程运行并且它成功触发。

最佳答案

我遇到的情况是我正在使用应用程序 BootstrapAutoConfiguration 阶段提供的 ApplicationEventPublisher。因为我正在使用它,所以我发布的事件不会按预期传播。

为了解决这个问题,我必须确保通过添加在自动配置阶段而不是引导阶段执行的另一个自动配置来更改引导期间放入的 ApplicationEventPublisher 。

我在我的案例中添加了(但它是可选的)ApplicationEventPublisherAware到类DockerSwarmDiscovery

@Configuration
@ConditionalOnBean(DockerSwarmDiscovery.class)
@Slf4j
public class DockerSwarmDiscoveryWatchAutoConfiguration {

@Autowired
private DockerSwarmDiscovery dockerSwarmDiscovery;

@Autowired
private ApplicationEventPublisher applicationEventPublisher;

@PostConstruct
public void injectPublisher() {
dockerSwarmDiscovery.setApplicationEventPublisher(applicationEventPublisher);
}

}

关于java - 在什么情况下 ApplicationEventPublisher.publishEvent 不会触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61532875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com