问题描述
我们使用MongoDB Changestream,而springdata使其变得非常容易,因为我们可以在正确的Kotlin对象中正确获取数据。但有个问题: 当我们更改对象的结构并进行部署时,更改流可能包含旧结构中的对象。并且我们收到“监听MongoDB时发生意外错误”。
要在以后的更改中也解决此问题,我们希望以通用格式(例如JSON)检索更改,并在try / catch块内的额外步骤中进行反序列化
我们的代码如下:
val results = mutablelistof<OurDomainType>()
val container: MessageListenerContainer = DefaultMessageListenerContainer(mongoTemplate)
val listener: MessageListener<ChangeStreamDocument<Document>,OurDomainType> =
MessageListener {
message ->
val changeStreamMessage = message.raw!!
if (results.size == maxRecordCount) {
container.stop()
return @MessageListener
}
if (message.body != null) {
results.add(message.body!!)
}
newCheckpoint = (changeStreamMessage.resumetoken.asDocument()["_data"] as BsonString).value
}
container.register(
ChangeStreamRequest<OurDomainType>(listener,changeStreamRequestOptions),OurDomainType::class.java)
container.start()
Thread.sleep(maxRequestTimeMs)
container.stop()
return newCheckpoint to results
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)