首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用HTTPBuilder池化连接

使用HTTPBuilder池化连接
EN

Stack Overflow用户
提问于 2013-01-08 07:23:39
回答 1查看 1.4K关注 0票数 1

我有一个Grails/Groovy应用程序,它使用HTTPBuilder库来调用我们的应用服务器。随着资源利用率的提高,我们正在寻找一种方法来汇集我们的HTTP连接。我发现的唯一支持池化的HTTPBuilder版本是AsyncHTTPBuilder,但我们的调用必须同步进行。有没有人有过使用HTTPBuilder连接池化的经验,或者有没有我们应该用来使用池化连接发出请求的备用库?

下面是我们使用HTTPBuilder库的一个示例:

代码语言:javascript
复制
def get(event, request) {    
    def http = new HTTPBuilder(appServerURL)
    def result = ""
    http.client.cookieStore.addCookie
    sessionHolderService.getVPMClientUser().apiSessionCookie
    http.request(GET, TEXT) {
        uri.path = "/path/on/appserver"
        uri.query = [event: event, request: request, responseFormat: 'text/xml']

        response.success = { resp, text ->
            result = text.text                
        }

        response.failure = { resp, text ->
            result = text.text
            throw new VPMClientException(resp.status, resp.message, text.text)
        }
    }
    result
}
EN

回答 1

Stack Overflow用户

发布于 2013-01-08 19:17:31

我们的应用程序也遇到了类似的问题(但仅限于客户端的一个实例)。以下解决方案基于Gpars。这些操作被放入发送队列中,然后由任务使用。

代码语言:javascript
复制
final def http = ...

final DataflowQueue sendQueue = new DataflowQueue()
final DataflowVariable finished = new DataflowVariable<Boolean>()

def sendQueueTask = task {
    while(!finished.isBound()){
            def sendAction = sendQueue.getVal(1, TimeUnit.SECONDS)
            if(sendAction)
                  sendAction()
        }
}

然后,这些操作被包装在sendQueue中添加的闭包中:

代码语言:javascript
复制
def get(event, request) { 
  sendQueue << {
       // your get implementation
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14205843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档