@Component
@ProcessingGroup("OrderProcessor")
public class OrderEventHandler {
@Inject
private EventGateway eventGateway;
public void createOrder() {
OrderCreatedEvent orderCreatedEvent = new OrderCreatedEvent("orderId",
100,
"CREATED");
eventGateway.publish(orderCreatedEvent);
}
@Repository
public interface SagaViewRepository extends CassandraRepository<SagaView, String> {
}
public CassandraSagaStore sagaStoreStore() {
return CassandraSagaStore(...);
}
@Saga(sagaStore = "sagaStoreStore")
public class OrderManagementSaga {
@Inject
private transient CommandGateway commandGateway;
@StartSaga
@SagaEventHandler(associationProperty = "orderId")
public void handle(OrderCreatedEvent orderCreatedEvent){
//Saga invoked;
}
中的任何提示都非常感谢,谢谢。
几乎在任何项目中,我都不会立即选择微服务路线。如果您采用这种方法,这意味着您将被困在基础设施工作中,比如如何将消息从一个服务发送到另一个服务,而不是提供业务功能。
这并不意味着我不会在您的应用程序中使用消息传递。正是命令、事件和查询的用法允许您将消息总线的距离更改为任意长度。
不管怎样,这更像是一个建议,而不是对你问题的回答。老实说,我不确定你在找什么。您已经声明您正在使用Cassandra(顺便说一句,Axon在任何方式都不支持)和Kafka。这使得Kafka是在服务之间发布事件的方法,对吗?例如,这就是Axon提供Kafka扩展的目的。
我不熟悉Spring和Mongo。我正在使用Spring Batch获取一些报告。我的查询需要一些MongoItemReader不支持的聚合,所以我根据下面的stackoverflow链接扩展了该类。 如何在Spring批处理中使用MongoItemReader聚合查询 但我的聚合有点问题。我制作的聚合在mongoDB中运行良好,但无法将其转换为Spring mongo聚合。 MongoDb聚合按
使用axon框架我有一个错误: 应用事件后,聚合标识符必须是非空的。确保在处理创建事件时最迟初始化了聚合标识符。我使用这个StorageEngine:
异常处理表示“将只处理从同一个类中的消息处理函数引发的异常” 消息拦截文档说:“用注释的函数将被视为处理程序拦截器,只有在异常结果时才会调用该函数。例如,为此目的使用注释函数允许您作为引发的数据库/服务异常的结果引发更特定于域的异常。” 但我不能让它起作用。我尝试添加异常处理程序,如下所示: 但不调用此方法。我尝试将异常处理程序方法放在聚合和单独的命令处理程序类上,尝试添加,并尝试捕获其他类型的异
是否可以在$match中执行OR? 我的意思是这样的:
我试图使用Axon 4.1+中的在一个2 JVM node K8集群上重播事件。虽然我将它设置为清理事件,但它只从一个节点中提取事件,而另一个节点继续运行,因为它的跟踪事件仍然是活动的。 我如何在所有JVM上同时禁用它,以便它能够正确地重播?然后启用所有这些命令,继续处理命令。 我尝试通过这段代码增加线程,这导致了另一个问题,即现有的令牌在InitialSemgmentsCount中永远不会增加,
任何关于如何实现这一点的指示和/或文件都将不胜感激。