在Netty 4 "代理"示例中,通道自动读取选项已被禁用:
serverBootStrap.group(bossGroup, workerGroup)
...
.childOption(ChannelOption.AUTO_READ, false)
Run Code Online (Sandbox Code Playgroud)
如果注释childOption(ChannelOption.AUTO_READ, false),代理示例将无法工作.更详细的是,在channelRead类的方法中HexDumpProxyFrontendHandler,outboundChannel将始终处于非活动状态.
我研究过Netty源代码,发现"自动读取"会影响方法fireChannelActive和fireChannelReadComplete类的DefaultChannelPipeline
if (channel.config().isAutoRead()) {
read();
}
Run Code Online (Sandbox Code Playgroud)
但我仍然无法弄清楚自动读取和代理示例之间的关系.在我看来,当数据发送到入站缓冲区时,Netty应该触发通道读取事件.
所以有两个问题:
outboundChannel总是无效?kotlinx-coroutines-reactive使得org.reactivestreams.Publisher有awaitXXX方法:
val person = peopleReactiveRepository.findById(personId).awaitSingle()
Run Code Online (Sandbox Code Playgroud)
如果通过人员 ID 无法找到人员,则该调用将抛出 NoSuchElementException,并且该异常无法在用户代码中直接处理。并且 Spring MVCExceptionHandler无法将此异常转换为用户友好的响应。
java.util.NoSuchElementException: No value received via onNext for awaitSingle
at kotlinx.coroutines.experimental.reactive.AwaitKt$awaitOne$$inlined$suspendCancellableCoroutine$lambda$1.onComplete(Await.kt:131) ~[kotlinx-coroutines-reactive-0.22.1.jar:na]
at reactor.core.publisher.StrictSubscriber.onComplete(StrictSubscriber.java:123) ~[reactor-core-3.1.2.RELEASE.jar:3.1.2.RELEASE]
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onComplete(Operators.java:1327) ~[reactor-core-3.1.2.RELEASE.jar:3.1.2.RELEASE]
at reactor.core.publisher.FluxHide$SuppressFuseableSubscriber.onComplete(FluxHide.java:137) ~[reactor-core-3.1.2.RELEASE.jar:3.1.2.RELEASE]
at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:130) ~[reactor-core-3.1.2.RELEASE.jar:3.1.2.RELEASE]
at reactor.core.publisher.MonoNext$NextSubscriber.onComplete(MonoNext.java:96) ~[reactor-core-3.1.2.RELEASE.jar:3.1.2.RELEASE]
at com.mongodb.reactivestreams.client.internal.ObservableToPublisher$1.onComplete(ObservableToPublisher.java:78) ~[mongodb-driver-reactivestreams-1.6.0.jar:na]
Run Code Online (Sandbox Code Playgroud)
我能想到的方法之一如下:
val person = peopleRepository.findById(personId).awaitFirstOrDefault(null)
if (person == null) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
但我不认为这是一种优雅的方式。例如,可以提供名为 的方法awaitSingleOptional。
Kotlin 有没有更好的方法来处理这种情况?
我已经使用VMware映像部署了CoreOS standealone服务器,请按照本指南体验CoreOS.
部署成功后,我发现我的CoreOS只启用了Docker服务,没有运行etcd和fleet服务.虽然我知道如何使用systemd手动运行etcd和fleet服务.而且我也知道使用合适的cloud-config可以安装CoreOS,其中etcd和fleet服务自动启动.
但我想知道:
/etc/systemd/system以使systemd自动启动etcd服务?谢谢
我知道这是一个愚蠢的问题,但我没有找到谷歌预期的答案。Spring MVC 4.3的新功能之一是支持配置JSON前缀
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="jsonPrefix" value=")]}',\n" />
</bean>
</mvc:message-converters>
Run Code Online (Sandbox Code Playgroud)
因此 JSON 输入/输出可能如下所示:
)]}',\n"{\"userName\":\"ABC\",\"emailId\":\"ABC@gmail.com\"}"
Run Code Online (Sandbox Code Playgroud)
我知道这是出于安全目的。但具体是关于什么呢?
JMS 消息 ID 如下所示ID:10.77.42.209-4280-1477454185311-1:1:1391:1:1。整个字符串被“-”和“:”分成几个部分。
显然,一部分代表生产者的IP地址,一部分可能代表消息ID。但别人有什么办法呢?
所以我的问题是每个部分的含义是什么?
使用ActiveMQ并且没有自定义消息ID
在有关 Kotlin 和 Spring Boot 的最新视频中:Spring Tips: Bootiful Kotlin Redux。Spring Boot 的类Application如下所示:
class SpringBootKotlinApplication
fun main(args: Array<String>) {
}
Run Code Online (Sandbox Code Playgroud)
我记得 Kotlin 必须像openSpring Boot 中那样进行注释。
open class SpringBootKotlinApplication
Run Code Online (Sandbox Code Playgroud)
看这个视频。
open那么为什么现在不需要注释呢?Spring Boot 现在需要扩展 Application 类吗?