我正在使用MongoDB 2.2.3的官方C#驱动程序
如何使用C#驱动程序为光标设置批量大小?
使用javascript我可以创建一个游标并为其设置批量大小:
var cursor = db.statistics.find(query).batchSize(100)
Run Code Online (Sandbox Code Playgroud)
我可以使用以下语句遍历所有项目:
while(cursor.objsLeftInBatch()>0){
var doc = cursor.next();
//process doc
}
Run Code Online (Sandbox Code Playgroud)
我想在C#中使用async/await支持具有相同的行为.我知道我可以使用C#中的游标,但它的默认批量大小是4MB.这太匹配了,无法通过一次调用返回客户端.
如果OutOfMemoryError是由分配直接字节缓冲区引起的,-XX:+ExitOnOutOfMemoryError则忽略JVM 标志。
检查 Oracle JDK 和 OpenJDK Java 版本“1.8.0_144” Java(TM) SE 运行时环境(构建 1.8.0_144-b01)Java HotSpot(TM)64 位服务器 VM(构建 25.144-b01,混合模式)
操作系统:Ubuntu 16.04
重现运行以下代码
package com.company;
import java.nio.ByteBuffer;
public class Main {
public static void main(String[] args) {
// This should guarantee to throw:
try {
ByteBuffer bb = ByteBuffer.allocateDirect(10485760*2);
System.out.println("OOME not triggered");
} catch (OutOfMemoryError err) {
System.out.println("OOME didn't terminate JVM!");
}
}
}
Run Code Online (Sandbox Code Playgroud)
虚拟机参数: -XX:MaxDirectMemorySize=10485760 -XX:+ExitOnOutOfMemoryError
程序输出“OOME 没有终止 JVM!” 并以退出代码 0 终止。我预计它会崩溃并返回大于 0 的退出代码。当OutOfMemory由于堆空间不足而抛出时,它以这种方式工作。
如果您使用 jvm …
从 Kafka connect 中删除源连接器后,该连接器保存的偏移量仍然存在于 Kafka 中。当具有相同名称的相同连接器再次启动时,它将开始处理上次保存的偏移量中的数据。更改连接器的名称不是一个解决方案,因为它很难自动提交连接器。
是否有解决此问题的方法(重命名源连接器不是一个选项)