Implementieren Sie zunächst einen benutzerdefinierten ApplicationEvent Publisher
Code: Select all
public class CustomEventPublisher implements ApplicationEventPublisher {
private final ApplicationEventPublisher publisher;
private final Logger logger = getLogger(CustomEventPublisher.class);
public CustomEventPublisher(ApplicationEventPublisher publisher) {
this.publisher = publisher;
}
@Override
public void publishEvent(ApplicationEvent event) {
logger.info("sending an event...");
publisher.publishEvent(event);
}
//.....
}
Code: Select all
@Configuration
public class CustomEventPublisherConfig {
@Bean
@Primary
public ApplicationEventPublisher getCustomEventPublisher(ApplicationEventPublisher publisher , RabbitTemplate rabbitTemplate) {
return new CustomEventPublisher(publisher, rabbitTemplate);
}
}
Code: Select all
public void pub() {
publisher.publishEvent(new Event(this , 1));
}
@EventListener
public void sub(Event e) {
this.value = e.getValue();
}
Dann habe ich versucht, den Aggregatstamm zu definieren
Code: Select all
@Entity
public class AggregateRoot extends AbstractAggregateRoot {
@Id
@GeneratedValue
private Long id;
private int value = 0;
public AggregateRoot setValue(int value) {
registerEvent(new Event(this , value));
return this;
}
}
Code: Select all
public void pub() {
repository.save(new AggregateRoot().setValue(1));
}
Irgendwelche Vorschläge zur Lösung dieses Problems?
Vielen Dank im Voraus
Mobile version