Kotlin
,Gradle
,M7
およびWeb-reactive
を選択して、Spring Initializrから新しいプロジェクトを作成しました。私はデータベースに三人を保存しようサブスクリプションの仕事とブロックがSpring反応Mongoにないのはなぜですか?
data class Person (val id: String)
@Component class PersonHandler(val template: ReactiveMongoTemplate)
{
init
{
println("Initializing")
val jim: Mono<Person> = template.save(Person("Jim"))
val john: Mono<Person> = template.save(Person("John"))
val jack: Mono<Person> = template.save(Person("Jack"))
launch(jim)
launch(john)
launch(jack)
println("Finished Initializing")
}
fun launch(mono: Mono<Person>)
{
mono.subscribe({println(it.id)}, {println("Error")}) // This works
// mono.block() This just hangs
}
}
:
は、私は小さなプロジェクトを作りました。save
メソッドは、実行する必要がある
Mono
を返します。私は単純に加入することによって、それを実行しようとすると、すべてが素敵な作品:
Initializing
Finished Initializing
2017-12-21 13:14:39.513 INFO 17278 --- [ Thread-13] org.mongodb.driver.connection : Opened connection [connectionId{localValue:3, serverValue:158}] to localhost:27017
2017-12-21 13:14:39.515 INFO 17278 --- [ Thread-12] org.mongodb.driver.connection : Opened connection [connectionId{localValue:4, serverValue:159}] to localhost:27017
2017-12-21 13:14:39.520 INFO 17278 --- [ Thread-14] org.mongodb.driver.connection : Opened connection [connectionId{localValue:5, serverValue:160}] to localhost:27017
Jim
Jack
John
私はblock
の代わりsubscribe
を使用する場合ただし、アプリケーションがハング:
Initializing
2017-12-21 13:16:47.200 INFO 17463 --- [ Thread-14] org.mongodb.driver.connection : Opened connection [connectionId{localValue:3, serverValue:163}] to localhost:27017
私は手動でデータベースを照会する場合は、私が見ますそのジムが保存されましたが、JackとJohnは保存されていません。
これはバグですか、何か間違っていますか?私は、コードがそれ以上になる前にユーザがデータベースにいることを保証したいので、私は本当にblock
を使いたいと思います。
私はそれが関連しているかどうかわからないが、私は、コンストラクタ
最小限の作業例があるに非最終プロパティtemplate
へのアクセス
警告コンパイラを取得します。それは2つの枝を含んでいる。 1つは問題の回避策です。
ありがとうございました!私はすでに、Github https://github.com/spring-projects/spring-boot/issues/11438#issuecomment-354259225に関するMWEの問題をhttps://github.com/martin-drozdik/spring-mongo-に公開しました。バグの例(回避策のあるブランチでも)が閉じられました。開発者はそれをSOに置くだけで十分だと教えてくれました。私はJiraに代わりにそれを掲示すべきですか? –
はい、これはSpring Frameworkの問題ではなく、Spring Bootの問題だと思います。だから私があなたに与えたJiraリンクはうまくいくはずです。 –
完了:https://jira.spring.io/browse/DATAMONGO-1841 –