In spring, org.springframework.amqp.rabbit
package has made easier integration of RabbitMQ.
To move to ActiveMQ, I couldn't figure to directly support ActiveMQ in spring axion framework, but only with JMS as an interface.
Now in sender side, I explicitly call Sender
in @EventSourcingHandler
by which I am able to receive events in Receiver
.
The only thing I can't figure out is, how to call axon's @EventHandler
from Receiver
whenever there is a new event.
Receiver Class:
public class Receiver {
@JmsListener(destination = "myEventQueue")
public void receive(AvailableQuantityInitializedEvent event) {
// Here I need to trigger some axion's EventHandler
}
}
Sender Class:
public class Sender {
@Autowired
private JmsTemplate jmsTemplate;
public void send(AvailableQuantityInitializedEvent event) {
jmsTemplate.convertAndSend("myEventQueue", event);
}
}
EventSourcingHandler
, where the sender sends the event.
@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
which I need to trigger from Receiver:
@ProcessingGroup(value = "name")
@AllArgsConstructor
@Component
public class SomeProjection {
@EventHandler
public void on(SomeEvent evt, @Timestamp Instant timestamp) {
System.out.println("EventHandler:SomeEvent");
}
}