在 Lettuce 和 AsyncHttpClient 之间共享 Netty NioEventLoopGroup
Share Netty NioEventLoopGroup between Lettuce & AsyncHttpClient
我的应用程序使用的是 Netty 4.1。6.Final 和 Lettuce 4.3.0, Async Http Client 2.1.0
Lettuce 4.3.0 也依赖于 netty 4.1.6.Final。
Async Http Client 4.3.0也依赖netty 4.1.4.Final.
现在我看到 Lettuce 创建了它的线程池。 Async Http Client 也创建它的线程池。我的应用程序为 Netty 创建了另一个线程池。
是否可以共享相同的 NioEventLoopGroup
跨所有组件以减少线程数?
异步 Http 客户端
AsyncHttpClient httpClient = new DefaultAsyncHttpClient(new DefaultAsyncHttpClientConfig.Builder().setEventLoopGroup(myEventGroup).build())
生菜
添加RedisEventLoopGroupProvider
class
public class RedisEventLoopGroupProvider extends DefaultEventLoopGroupProvider {
public RedisEventLoopGroupProvider() {
super(3);
// TODO Auto-generated constructor stub
}
@SuppressWarnings("unchecked")
@Override
public <T extends EventLoopGroup> T allocate(Class<T> type) {
if (NioEventLoopGroup.class.equals(type)) {
return (T)myEventGroup;
}
return super.allocate((Class<T>)type);
}
}
这样初始化
RedisClient redisClient = RedisClient.create( DefaultClientResources.builder()
.eventLoopGroupProvider(new RedisEventLoopGroupProvider())
.ioThreadPoolSize(1)
.computationThreadPoolSize(3)
.build(), Environment.REDIS_CONNECTION);
我的应用程序使用的是 Netty 4.1。6.Final 和 Lettuce 4.3.0, Async Http Client 2.1.0
Lettuce 4.3.0 也依赖于 netty 4.1.6.Final。 Async Http Client 4.3.0也依赖netty 4.1.4.Final.
现在我看到 Lettuce 创建了它的线程池。 Async Http Client 也创建它的线程池。我的应用程序为 Netty 创建了另一个线程池。
是否可以共享相同的 NioEventLoopGroup
跨所有组件以减少线程数?
异步 Http 客户端
AsyncHttpClient httpClient = new DefaultAsyncHttpClient(new DefaultAsyncHttpClientConfig.Builder().setEventLoopGroup(myEventGroup).build())
生菜
添加RedisEventLoopGroupProvider
class
public class RedisEventLoopGroupProvider extends DefaultEventLoopGroupProvider {
public RedisEventLoopGroupProvider() {
super(3);
// TODO Auto-generated constructor stub
}
@SuppressWarnings("unchecked")
@Override
public <T extends EventLoopGroup> T allocate(Class<T> type) {
if (NioEventLoopGroup.class.equals(type)) {
return (T)myEventGroup;
}
return super.allocate((Class<T>)type);
}
}
这样初始化
RedisClient redisClient = RedisClient.create( DefaultClientResources.builder()
.eventLoopGroupProvider(new RedisEventLoopGroupProvider())
.ioThreadPoolSize(1)
.computationThreadPoolSize(3)
.build(), Environment.REDIS_CONNECTION);