我通过CommandGateway.sendAndWait(Object command, long timeout, TimeUnit unit)方法发送命令并期待结果:
Greeting greeting = commandGateway.sendAndWait(new GenericCommandMessage<GetGreetingCommand>(cmd), 1000, TimeUnit.MILLISECONDS);
上述调用有 3 种可能的结果:
1)返回一个非空对象。
2)返回一个空对象(通过我的@CommandHandler中的业务逻辑查询数据库但没有找到我要找的东西)
3)返回一个空对象(Axon框架在超时的情况下返回)
我需要实现一种方法来区分点 2) 和 3),以便我可以相应地返回 NOT_FOUND 或 REQUEST_TIMEOUT 状态。您对如何建模有什么建议吗?
我想到的一种方法是在 Greeting (我的模型对象)中添加一个状态字段,如果@CommandHandler没有从 DB 接收到任何内容,我将返回一个 status = -1 的虚拟 Greeting 对象(意思是 NOT_FOUND),但这个解决方案会意味着向模型对象添加标志只是为了区分框架流,我不认为这是推荐的。