我正在尝试使用spring集成来解耦长时间运行的操作,以便更快地将响应返回给用户。
该请求在我们的数据库中创建一个gps位置条目。我想做一个http请求,通过反向地理编码服务获取gps位置的地址。这可能需要几秒钟的时间,所以我想稍后再讨论。
Spring集成在这方面效果很好,不过我遇到的问题是,如果并行运行的服务要加快速度,则在数据库中保存位置条目时会发生冲突。
在Spring集成中,有没有处理持久对象的最佳实践?我是否应该尝试锁定对象,直到主请求得到处理?
更新:
基本上,我有两种方法来操作position对象(伪Java代码):
MVC控制器调用的服务类中的一个:
void createPosition(float longitude, float latitude) {
Position position = new Position(longitude, latitude);
positionDao.save(position);
locationChannel.send(new GenericMessage<Position>(position));
}
它位于一个服务类中,由连接到locationChannel的ServiceActivator调用:
void getAddressForPosition(Position) {
position.setAddress(/* get address via http request from openstreet or google */);
positionDao.save(position);
}