【发布时间】:2019-09-11 15:27:14
【问题描述】:
在春季,org.springframework.amqp.rabbit 包使 RabbitMQ 的集成变得更加容易。
要迁移到 ActiveMQ,我无法在 spring axion 框架中直接支持 ActiveMQ,而只能使用 JMS 作为接口。
现在在发送方,我在@EventSourcingHandler 中明确调用Sender,通过它我可以在Receiver 中接收事件。
我唯一想不通的是,每当有新事件时,如何从Receiver 调用axon 的@EventHandler。
接收器类:
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 我需要从 Receiver 触发:
@ProcessingGroup(value = "name")
@AllArgsConstructor
@Component
public class SomeProjection {
@EventHandler
public void on(SomeEvent evt, @Timestamp Instant timestamp) {
System.out.println("EventHandler:SomeEvent");
}
}
【问题讨论】:
标签: spring rabbitmq activemq axon jmstemplate