我正在使用帶有 Spring Integration 的 Project Reactor 從 Kafka 讀取并寫入 MongoDB,我的 Kafka 使用效果很好,但是.handle(MongoDb.reactiveOutboundChannelAdapter(mongoFactory))卡住了。我已經看到這個函式的內部代碼是new ReactiveMongoDbStoringMessageHandler(mongoFactory)),所以我嘗試了以下方法(我有一個transform()從 轉換為 的方法ConsumerRecord,Mono<String>帶有@Transformer注釋):
public IntegrationFlows writeToMongo() {
return IntegrationFlows.from(kafkaChannel)
.transform(this)
.handle(new ReactiveMongoDbStoringMessageHandler(mongoFactory))
.get();
}
代碼遵循檔案https://docs.spring.io/spring-integration/reference/html/mongodb.html#mongodb-reactive-channel-adapters。我得到的錯誤是:
java.lang.IllegalArgumentException: Found ambiguous parameter type [class java.lang.Void] for method match:然后是很長的函式串列。有什么理由會發生這種情況?
uj5u.com熱心網友回復:
如果您不new ReactiveMongoDbStoringMessageHandler(mongoFactory)打算訂閱回傳的Mono. A.handle(MongoDb.reactiveOutboundChannelAdapter(mongoFactory))是正確的做法,因為它將其包裝ReactiveMongoDbStoringMessageHandler到ReactiveMessageHandlerAdapter自動訂閱中。
但是我認為您真正的問題在于.transform(this). 我相信您在這個類中有很多方法,因此請更具體地使用方法名稱。而這與 Project Reactor 無關。不確定為什么要Mono在發送之前嘗試轉換為ReactiveMongoDbStoringMessageHandler...您可能在提供有效負載(ConsumerRecord?)時遇到問題,該有效負載不是用于保存到集合中的 MongoDB 映射物體。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/415654.html
標籤:
