我从spring boot doc获得了以下指令:
在应用程序中添加spring-boot-starter-web和spring-boot-starter-webflux模块会导致Spring Boot自动配置Spring MVC,而不是WebFlux.选择此行为是因为许多Spring开发人员将spring-boot-starter-webflux添加到他们的Spring MVC应用程序中以使用反应式WebClient.您仍然可以通过将所选应用程序类型设置为SpringApplication.setWebApplicationType(WebApplicationType.REACTIVE)来强制执行您的选择.
我的问题是:
如果我的应用程序包含MVC服务和webflux服务怎么办?是否支持?
例如:
我可能有一些基于MVC的现有管理服务.现在我想添加一些webflux风格的新服务.
谢谢
莱昂
我想创建一个共享资源池,可以由多个线程同时访问.
每个线程都会执行以下操作:
从池中获取资源(如果没有可用资源,请执行其他操作)
使用获取的资源执行某些操作
将资源返回池中.
在java中,我可能会使用ConcurrentLinkedQueue.
scala中有更好的选择吗?
在我的下面测试中,我尝试模拟超时,然后发送正常请求.但是,我得到了spray.can.Http $ ConnectionException:过早连接关闭(服务器似乎不支持请求流水线)
class SprayCanTest extends ModuleTestKit("/SprayCanTest.conf") with FlatSpecLike with Matchers {
import system.dispatcher
var app = Actor.noSender
protected override def beforeAll(): Unit = {
super.beforeAll()
app = system.actorOf(Props(new MockServer))
}
override protected def afterAll(): Unit = {
system.stop(app)
super.afterAll()
}
"response time out" should "work" in {
val setup = Http.HostConnectorSetup("localhost", 9101, false)
connect(setup).onComplete {
case Success(conn) => {
conn ! HttpRequest(HttpMethods.GET, "/timeout")
}
}
expectMsgPF() {
case Status.Failure(t) =>
t shouldBe a[RequestTimeoutException]
}
}
"normal http response" should …Run Code Online (Sandbox Code Playgroud) 我通常在我的 CI 中执行以下命令:
干净更新编译测试发布
但是,我想从 sbt 命令行中排除 1 个(或几个)测试类。
我怎样才能做到这一点?(我不想更改我的代码以使用忽略等)
我曾经调用 HttpServletRequest.getRemoteAddr() 来获取客户端 ip。
我想知道如何通过 ServerWebExchange 获得它。
我最好的猜测是:
serverWebExchange.getRequest().getRemoteAddress().getAddress().getHostAddress();
Run Code Online (Sandbox Code Playgroud)
这是正确的吗?
我想在我的 WebFilter 中做类似下面的事情来选择性地绕过后续的过滤器和 RestControllers:
if(shouldRedirect(exchange)){
//do redirect
}else if(!canAccess(exchange)){
//return a 403 response
}else{
chain.filter(exchange);
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
谢谢
莱昂
我想知道侦探是否支持反应式 WebClient 检测。
我没有从文档中找到它:
检测 Spring 应用程序的常见入口和出口点(servlet 过滤器、异步端点、休息模板、计划操作、消息通道、Zuul 过滤器和 Feign 客户端)。
我的情况:
我可以在 WebFilter 或我的其余资源中使用 WebClient 来生成 Mono。
而且我要:
如果目前不支持检测,我是否应该从上下文中手动获取跨度并像这样自己完成:
反应式 WebClient 上的 OpenTracing 检测
谢谢
莱昂