Весной пакет org.springframework.amqp.rabbit
упростил интеграцию RabbitMQ.Чтобы перейти на ActiveMQ, я не мог предположить, что напрямую поддерживаю ActiveMQ в Spring Axion Framework, но только с JMS в качестве интерфейса.
Теперь на стороне отправителя я явно вызываю Sender
в @EventSourcingHandler
, с помощью которогоЯ могу получать события в Receiver
.
Единственное, что я не могу понять, это как вызывать аксон @EventHandler
из Receiver
всякий раз, когда есть новое событие.
Класс получателя:
public class Receiver {
@JmsListener(destination = "myEventQueue")
public void receive(AvailableQuantityInitializedEvent event) {
// Here I need to trigger some axion's EventHandler
}
}
Класс отправителя:
public class Sender {
@Autowired
private JmsTemplate jmsTemplate;
public void send(AvailableQuantityInitializedEvent event) {
jmsTemplate.convertAndSend("myEventQueue", event);
}
}
EventSourcingHandler
, куда отправитель отправляет событие.
@NoArgsConstructor
@Aggregate
@Data
@ComponentScan
public class SomeAggregate {
@EventSourcingHandler
protected void on(SomeEvent event, Sender sender) {
this.x = event.xx();
this.y = event.yy();
sender.send(event);
}
}
@EventHandler
, которыйМне нужно вызвать с приемника:
@ProcessingGroup(value = "name")
@AllArgsConstructor
@Component
public class SomeProjection {
@EventHandler
public void on(SomeEvent evt, @Timestamp Instant timestamp) {
System.out.println("EventHandler:SomeEvent");
}
}