我正在编写一个向Android手机发送通知的反应式api。发送通知的过程需要从手机访问令牌代码以将消息推送给它。为了实现这一点,我在服务器端创建了一个endpoint来接收来自手机的令牌。我的问题是保存令牌,然后在上面描述的过程中使用它。这是TokenController、TokenService、TokenRepository和Token POJO:
@RestController
@RequestMapping("/api")
public class TokenController {
@Autowired
private TokenService tokenService;
@CrossOrigin
@RequestMapping(value = "/token",
method = RequestMethod.POST,
consumes = MediaType.APPLICATION_JSON_VALUE,
produces = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody ResponseEntity<?> newToken(@RequestBody Token token) {
return ResponseEntity.ok(tokenService.save(token));
}
}
//---------------------------------------------------------------
@Service
public class TokenServiceImpl implements TokenService {
@Autowired
private TokenRepository tokenRepository;
@Override
public Mono<Token> save(Token token) {
return tokenRepository.save(token);
}
}
//---------------------------------------------------------------
@Repository
public interface TokenRepository extends ReactiveCrudRepository<Token, Long> { }
//---------------------------------------------------------------
@Data
@Document(collection = "token")
public class Token {
@Id
private Long _id;
private Long clientCode;
private String tokenKey; // VALUE THAT IS NEEDED ON NOTIFICATION
}
为了发送通知,我有一个通知控制器,需要访问数据库并查找令牌。阅读反应式aproach时,我无法理解如何在通知服务中使用TokenRepository读取Dabase,并使用类似“findById”的方法来检索令牌。如何使用返回的Mono对象并获取属性“tokenKey”?
我发现我可以将未来结果存储在CompletableFuture
中,然后在它完成时存储Token对象。这是一个例子:
CompletableFuture<Token> tokenFuture = tokenRepository.findByClientCode(notificationRequest.getClientCode()).toFuture();
Token token = tokenFuture.get(5, TimeUnit.SECONDS);
它等待5秒钟,或者抛出一个TimeoutException
而不是响应性
public @ResponseBody Mono<ResponseEntity<Token>> newToken(@RequestBody Token token) {
return tokenService.save(token)
.map(t -> ResponseEntity.ok(t));
}
你正在将你的mono包装在一个对象中,而这个对象没有被订阅,所以将其反转。
我们的业务逻辑代码主要在 controllers 目录中,新建一个 todo.py 文件, 核心代码如下 (完整代码参考这里),代码说明可以参考注释: # -*- coding: utf-8 -*- import flask from flask import request, redirect, flash, render_template, url_for from application.e
在实现访问服务器和与本地数据库交互之后,是时候把事情整合起来了。逻辑步骤如下: 从数据库获取数据 检查是否存在对应星期的数据 如果有,返回UI并且渲染 如果没有,请求服务器获取数据 结果被保存在数据库中并且返回UI渲染 但是我们的commands不应该去处理所有这些逻辑。数据源应该是一个具体的实现,这样就可以被容易地修改,所以增加一些额外的代码,然后把command从数据访问中抽象出来听起来是个不
如何为不支持流式处理的数据库提供反应式流 API?比如说dymodb。执行 get 调用时,dynamodb 将返回所有结果。因此,即使我将 get 调用包装在源中,如何处理来自下游阶段的背压?另外,如何实现写入 db 中的写入调用?我的水槽会是什么样子?任何关于此的指针都会有所帮助。
问题内容: 最近,我被介绍了node.js以及一些很酷的包,例如express和jade。我有几个问题经常会敲门: 如果选择node.js构建下一个网站,我将使用JavaScript编写服务器端复杂的逻辑吗?但我认为您无法将JavaScript与Java或Python进行比较来编写服务器端代码,因为它们拥有如此众多的库。node.js是真的吗?还是我错过了什么? 我可以从node.js调用Java
我在编译使用嵌入式Derby数据库的java程序时遇到了麻烦。我正在使用Netbeans,并使用了“clean and build”选项,该选项创建了一个dist文件夹。我将数据库添加到dist/resources文件夹中,我将derby连接指向的那个文件夹: 麻烦的是,有些人无法运行程序。对于有些人来说,这就像点击dist文件夹中的.jar文件一样简单。对其他人来说,它根本不会运行。另外,我已经
这种方法对反应友好吗? 我有一个反应式控制器“save”方法调用myService。保存(请求)。 服务层需要: jdbc save(在另一个调度程序上,因为代码被阻塞), 我无法在一个管道中链接所有调用,或者我不知道如何实现这一点,因为我想尽快发送回(1)丢失的...... 相反,我触发(1)中的子运算。 这是我应该如何处理这件事,还是有一个聪明的方法可以在一个管道中做到这一点? 下面的代码来支