首页 / 教程列表 / Elasticsearch.NET/NEST中文文档(教程) / 禁用每个请求的嗅探和Ping

禁用每个请求的嗅探和Ping

1006 发布于: 2021-03-25 读完约需 1 分钟

即使你正在使用一个嗅探连接池,该连接池设置为嗅探启动/失败并启用ping,你也可以根据每个请求选择禁用连接池嗅探和ping这些行为。

在以下测试中,设置了一个集群,在启动时进行ping和嗅探,但在第一个请求时禁用了嗅探,因此我们只看到ping和响应。

现在设置集群并配置客户端,使其始终在启动时嗅探:

var audit = new Auditor(() => VirtualClusterWith
    .Nodes(10)
    .ClientCalls(r => r.SucceedAlways())
    .Sniff(c=>c.SucceedAlways())
    .Ping(c=>c.SucceedAlways())
    .SniffingConnectionPool()
    .Settings(s => s.SniffOnStartup()) 
);

现在我们禁用嗅探请求,因此即使这是第一次调用,也不希望在启动时嗅探请求。

相反,启动时的嗅探被推迟到对集群的第二次调用,该调用不会根据每个请求禁用嗅探。之后,就不会再对启动进行嗅探了:

audit = await audit.TraceCalls(
    new ClientCall(r => r.DisableSniffing()) // 禁用嗅探
    {
        { PingSuccess, 9200 }, // 每一次调用Ping成功
        { HealthyResponse, 9200 }
    },
    new ClientCall()
    {
        { SniffOnStartup }, // 第二次调用时,发生了启动嗅探行为
        { SniffSuccess, 9200 },
        { PingSuccess, 9200 },
        { HealthyResponse, 9200 }
    },
    new ClientCall()
    {
        { PingSuccess, 9201 }, // 不再发生启动时嗅探行为了
        { HealthyResponse, 9201 }
    }
);

现在,我们禁用请求的ping行为:

var audit = new Auditor(() => VirtualClusterWith
    .Nodes(10)
    .ClientCalls(r => r.SucceedAlways())
    .Sniff(c=>c.SucceedAlways())
    .SniffingConnectionPool()
    .Settings(s => s.SniffOnStartup())
);

audit = await audit.TraceCall(
    new ClientCall(r => r.DisablePing()) // 禁用ping
    {
        { SniffOnStartup },
        { SniffSuccess, 9200 }, // 在嗅探之后不会发生ping行为
        { HealthyResponse, 9200 }
    }
);

最后,让演示如何在请求上禁用嗅探和ping

var audit = new Auditor(() => VirtualClusterWith
    .Nodes(10)
    .ClientCalls(r => r.SucceedAlways())
    .SniffingConnectionPool()
    .Settings(s => s.SniffOnStartup())
);

audit = await audit.TraceCall(
    new ClientCall(r=>r.DisableSniffing().DisablePing()) // 禁用嗅探和ping
    {
        { HealthyResponse, 9200 } // 在调用之前没有发生嗅探和ping行为
    }
);

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

发表评论

登录用户才能发表评论, 请 登 录 或者 注册