标签: gmongo

通过Grails域条件在活动游标中使用Mongo CursorNotFound异常

我正在使用Grails 2.4.4,mongo插件3.0.2,MongoDB 2.4.10使用远程数据库连接.

grails {
    mongo {
        host = "11.12.13.14"    // A remote server IP
        port = 27017
        databaseName = "blogger"
        username = "blog"
        password = "xyz"
        options {
            autoConnectRetry = true
            connectTimeout = 3000
            connectionsPerHost = 40
            socketTimeout = 120000
            threadsAllowedToBlockForConnectionMultiplier = 5
            maxAutoConnectRetryTime=5
            maxWaitTime=120000
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在我们的应用程序的一部分中,服务方法迭代超过20,000个用户并向他们发送电子邮件:

Person.withCriteria {       // Line 323
    eq("active", true)
    order("dateJoined", "asc")
}.each { personInstance ->
   // Code to send an email which takes an average of 1 second
}
Run Code Online (Sandbox Code Playgroud)

在为大约6000个用户执行此操作后,我收到一个MongoDB游标异常:

2015-04-11 07:31:14,218 …
Run Code Online (Sandbox Code Playgroud)

grails mongodb gmongo grails-2.4

8
推荐指数
1
解决办法
4238
查看次数

当副本集在本地 IP 地址上相互连接时,连接到远程 MongoDB 副本集

我们在本地网络接口(即192.168.1.x)上设置了一个mongo副本集。副本集成员是唯一知道此接口的成员。这些实例也位于可从我们的网络内部 (10.xxx) 寻址的外部接口上。当尝试仅使用 Java 驱动程序[2.10.1](通过gMongo 包装器)连接到“主节点”时,我们遇到了一个问题,即由于应用程序无法确定其他副本节点而无法建立连接。即使我提供服务器列表中的所有外部接口,也会发生这种情况。

我还需要能够设置从我的计算机到副本集的 SSH 隧道。我再次遇到了同样的问题,因为副本集提供了不适用于我的主机名和 IP 地址。

当副本仅通过本地 IP 地址相互了解时,如何连接到副本集?

以下是代码示例以及由此产生的错误。下面的示例假设已设置从本地主机到远程服务器的隧道。

@Grab(group='com.gmongo', module='gmongo', version='1.1')

import com.gmongo.*
import com.mongodb.*

def hosts= [
        [host:'127.0.0.1', port:29017],
        //[host:'127.0.0.1', port:29018],  //have tried with and without the others commented
        //[host:'127.0.0.1', port:29019],
        ]

List<ServerAddress> addrs = hosts.collect {it.port?new ServerAddress(it.host, it.port):new ServerAddress(it.host)}
MongoClientOptions clientOptions = new MongoClientOptions.Builder().build()
def mongo = new GMongoClient(addrs, clientOptions)
def db = mongo.getDB("mydb")

def result = db.tickets.findOne([:])

println result
Run Code Online (Sandbox Code Playgroud)

结果是这样的:

WARNING: couldn't resolve host [mongo03:27017]
May 16, 2013 …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-java gmongo

3
推荐指数
1
解决办法
6387
查看次数

标签 统计

gmongo ×2

mongodb ×2

grails ×1

grails-2.4 ×1

mongodb-java ×1