我正在使用 AWS Congito 用户池通过 Cognito 身份池进行账户管理,该身份池将此用户池作为身份提供者。我使用它来控制通过 API 网关对 API 的访问,该网关将请求发送到 Lambda。我的 Lambda 是使用 Micronaut 用 Java 8 实现的。所有这些都运行良好。
在 Lambda 中,我从以下Principal中获取名称HttpRequest:
protected String resolveUser( HttpRequest request ){
String ret = null;
Optional<Principal> principal = request.getUserPrincipal();
if( principal.isPresent() ){
ret = principal.get().getName();
}
if( ret == null || ret.length() == 0 ){
ret = "unknown";
}
return ret;
}
Run Code Online (Sandbox Code Playgroud)
Cognito identityId 的字符串名称中返回的内容。像这样的东西:
us-east-1:xxxxe650-53f4-4cba-b553-5dff42bexxxx
我想记录实际的用户登录信息,或者至少有一些方法可以在需要时将 identityId 转换为登录信息。
该LookupDeveloperIdentity API调用似乎是去了解这个正确的方式,但我无法得到它的工作。
尝试使用 Java 和 AWS Java SDK 2 执行此操作: …
amazon-web-services amazon-cognito aws-java-sdk micronaut micronaut-aws
如何将8080Micronaut 中的默认端口更改为其他端口?我在我的项目中使用了 Micronaut,我找不到更改端口号的配置。
Well after struggling a lot with Micronaut to dompted our proxies, I came to the idea to write a Spring Boot Application doing for the same purpose.
For Spring Boot the HTTP proxy configuration is really straight forward and there are a lot examples available. I came out with this example:
application.properties
generic.proxyHost = my.corporateproxy.net
generic.proxyPort = 3128
Run Code Online (Sandbox Code Playgroud)
MyController.java
@Value("${generic.proxyHost}")
private String proxyHost;
@Value("${generic.proxyPort}")
private Integer proxyPort;
@GetMapping("/proxy")
public HttpStatus getApiWithProxy(){
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
InetSocketAddress address = new …Run Code Online (Sandbox Code Playgroud) 我想将以下 json 对象保存到 PostgreSQL db 表中作为 jsonb
{
"fname":"john",
"lname:"doe",
}
Run Code Online (Sandbox Code Playgroud)
我目前使用 PGObject 创建对象并将类型设置为 jsonb 并将值作为 json 字符串传递
寻找 micronaut-data 和 micronaut 的更好方法 micronaut-data 中 是否支持任何本机数据类型将 Java 对象转换为 JSON 并存储在 db 中? 如何使用 postgres jdbc 驱动程序保存数据
使用 :jsonb 在查询中进行类型转换已经尝试过使用原始 jdbc 如果它适用于 micronaut-data / 捕食者怎么做?
寻找更好的解决方案来处理 micronaut 中的全局异常https://docs.micronaut.io/latest/guide/index.html#errorHandling
控制器
@Controller("/category")
public class CategoryController {
@Delete(uri = "/{id}")
public Maybe<HttpResponse> delete(@NotBlank String id) {
LOG.info(String.format("API --> Deleting the specified category"));
return iCategoryManager.Count(id).flatMap(item -> {
if (item > 0) {
iCategoryManager.Delete(id).subscribe();
return Maybe.just(HttpResponse.noContent());
} else
return Maybe.just(HttpResponse.notFound());
});
}
}
Run Code Online (Sandbox Code Playgroud)
iCategoryManager.Count(id)导致如下异常,如何捕获GlobalExceptionHandler上的异常
io.micronaut.core.serialize.exceptions.SerializationException: Incorrect message body size to deserialize to a Long
at io.micronaut.rabbitmq.serdes.JavaLangRabbitMessageSerDes$LongSerDes.deserialize(JavaLangRabbitMessageSerDes.java:314)
at io.micronaut.rabbitmq.serdes.JavaLangRabbitMessageSerDes$LongSerDes.deserialize(JavaLangRabbitMessageSerDes.java:306)
at io.micronaut.rabbitmq.serdes.JavaLangRabbitMessageSerDes.deserialize(JavaLangRabbitMessageSerDes.java:81)
at io.micronaut.rabbitmq.intercept.RabbitMQIntroductionAdvice.deserialize(RabbitMQIntroductionAdvice.java:323)
at io.micronaut.rabbitmq.intercept.RabbitMQIntroductionAdvice.lambda$intercept$22(RabbitMQIntroductionAdvice.java:268)
at io.reactivex.internal.operators.flowable.FlowableFlatMap$MergeSubscriber.onNext(FlowableFlatMap.java:132)
at io.micronaut.reactive.rxjava2.RxInstrumentedSubscriber.onNext(RxInstrumentedSubscriber.java:59)
at io.reactivex.internal.operators.flowable.FlowableTimeoutTimed$TimeoutSubscriber.onNext(FlowableTimeoutTimed.java:101)
at io.micronaut.reactive.rxjava2.RxInstrumentedSubscriber.onNext(RxInstrumentedSubscriber.java:59)
at io.reactivex.internal.subscriptions.DeferredScalarSubscription.complete(DeferredScalarSubscription.java:132)
at io.reactivex.internal.operators.single.SingleToFlowable$SingleToFlowableObserver.onSuccess(SingleToFlowable.java:62)
at …Run Code Online (Sandbox Code Playgroud) 我想根据环境配置日志附加程序,例如,在生产中运行时,我想配置一个将日志发送到elasticsearch的附加程序,但在测试或开发模式下,不会启用此附加程序。
当我尝试使用内存 h2 数据库和 Jpa 配置 micronaut-data 时,出现以下异常。
我一直在关注文档
我使用 maven 作为构建工具从命令行创建了该项目。我有以下
<dependency>
<groupId>io.micronaut.configuration</groupId>
<artifactId>micronaut-jdbc-tomcat</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.micronaut.data</groupId>
<artifactId>micronaut-data-hibernate-jpa</artifactId>
<version>1.0.0.M3</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
而且我还添加了这样的注释处理器
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
......
<configuration>
...
<annotationProcessorPaths>
<path>
<groupId>io.micronaut</groupId>
<artifactId>micronaut-inject-java</artifactId>
<version>${micronaut.version}</version>
</path>
<path>
<groupId>io.micronaut</groupId>
<artifactId>micronaut-validation</artifactId>
<version>${micronaut.version}</version>
</path>
<path>
<groupId>io.micronaut.data</groupId>
<artifactId>micronaut-data-processor</artifactId>
<version>1.0.0.M3</version>
</path>
</annotationProcessorPaths>
</configuration>
.....
</plugin>
Run Code Online (Sandbox Code Playgroud)
我的实体类和存储库类与指南中提到的完全一样。当我尝试使用存储库保存时,出现此异常
18:16:37.787 [pool-1-thread-3] ERROR i.m.h.s.netty.RoutingInBoundHandler - Unexpected error occurred: No backing RepositoryOperations configured for repository. Check your configuration and try again
io.micronaut.context.exceptions.ConfigurationException: No backing RepositoryOperations configured …Run Code Online (Sandbox Code Playgroud) “...在反应式执行的情况下,如果支持实现是阻塞的,Micronaut Data 将使用配置的 I/O 线程池在不同的线程上调度查询执行。
如果支持实现在驱动程序级别本机支持反应类型,则不使用 I/O 线程池,而是假定驱动程序将以非阻塞方式处理查询......”
我的直接问题:访问关系数据库(例如 PostGres R2DBC 驱动程序)抛出 R2DBC Micronaut Data 是否会依赖 R2DBC 驱动程序以非阻塞方式处理并且更具可扩展性?
假设我的微服务公开了一个基于 ReactiveX 的 Reactive 端点并且必须访问一个阻塞数据源 throw Micronaut Data JDBC(例如,生产版本中还没有 Oracle R2DBC),从上面可以清楚地看出它“将使用配置我/O 线程池”,同时访问数据。我是否完全失去了响应式端点的好处?
这是我与 Micronaut 合作的第一个项目,我有几个采用 Reactive 方法的项目。我远不是反应式最佳实践方面的专家,但我记得我已经阅读了几篇博客:如果您有阻塞源,请避免使用反应式堆栈。我还记得读到过,将非阻塞与阻塞设计混合在一起可能会产生更糟糕的结果,这主要是因为 Eventloop(例如 Netty)的设计方式。由于我将 Micronaut 与 ReactiveX 和关系数据库一起使用,某些情况下使用 R2DBC,而其他情况下使用 JDBC,我将感谢对我的疑问的任何评论。
使用 Intelj 使用最新版本的 Micronaut 创建新应用程序会在构建过程中引发异常。
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':shadowJar'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:187)
at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:268)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:185)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:173)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)
at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:408)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:395)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:388)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:374)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124) …Run Code Online (Sandbox Code Playgroud) 我想用JpaRepository扩展我的TestRepository接口,并利用jpa方法查询,分页和排序等功能,而无需手动定义实体管理器bean,也无需编写任何sql.PS在微电子项目中
micronaut ×10
java ×3
spring-boot ×2
aws-java-sdk ×1
build.gradle ×1
gradle ×1
jdbc ×1
json ×1
kotlin ×1
logback ×1
netty ×1
postgresql ×1
r2dbc ×1
reactivex ×1
spring ×1