@@ -88,29 +88,32 @@ DefaultClientResources lettuceClientResources(ObjectProvider<ClientResourcesBuil
88
88
@ ConditionalOnMissingBean (RedisConnectionFactory .class )
89
89
@ ConditionalOnThreading (Threading .PLATFORM )
90
90
LettuceConnectionFactory redisConnectionFactory (
91
- ObjectProvider <LettuceClientConfigurationBuilderCustomizer > builderCustomizers ,
91
+ ObjectProvider <LettuceClientConfigurationBuilderCustomizer > clientConfigurationBuilderCustomizers ,
92
+ ObjectProvider <LettuceClientOptionsBuilderCustomizer > clientOptionsBuilderCustomizers ,
92
93
ClientResources clientResources ) {
93
- return createConnectionFactory (builderCustomizers , clientResources );
94
+ return createConnectionFactory (clientConfigurationBuilderCustomizers , clientOptionsBuilderCustomizers , clientResources );
94
95
}
95
96
96
97
@ Bean
97
98
@ ConditionalOnMissingBean (RedisConnectionFactory .class )
98
99
@ ConditionalOnThreading (Threading .VIRTUAL )
99
100
LettuceConnectionFactory redisConnectionFactoryVirtualThreads (
100
- ObjectProvider <LettuceClientConfigurationBuilderCustomizer > builderCustomizers ,
101
+ ObjectProvider <LettuceClientConfigurationBuilderCustomizer > clientConfigurationBuilderCustomizers ,
102
+ ObjectProvider <LettuceClientOptionsBuilderCustomizer > clientOptionsBuilderCustomizers ,
101
103
ClientResources clientResources ) {
102
- LettuceConnectionFactory factory = createConnectionFactory (builderCustomizers , clientResources );
104
+ LettuceConnectionFactory factory = createConnectionFactory (clientConfigurationBuilderCustomizers , clientOptionsBuilderCustomizers , clientResources );
103
105
SimpleAsyncTaskExecutor executor = new SimpleAsyncTaskExecutor ("redis-" );
104
106
executor .setVirtualThreads (true );
105
107
factory .setExecutor (executor );
106
108
return factory ;
107
109
}
108
110
109
111
private LettuceConnectionFactory createConnectionFactory (
110
- ObjectProvider <LettuceClientConfigurationBuilderCustomizer > builderCustomizers ,
112
+ ObjectProvider <LettuceClientConfigurationBuilderCustomizer > clientConfigurationBuilderCustomizers ,
113
+ ObjectProvider <LettuceClientOptionsBuilderCustomizer > clientOptionsBuilderCustomizers ,
111
114
ClientResources clientResources ) {
112
- LettuceClientConfiguration clientConfig = getLettuceClientConfiguration (builderCustomizers , clientResources ,
113
- getProperties ().getLettuce ().getPool ());
115
+ LettuceClientConfiguration clientConfig = getLettuceClientConfiguration (clientConfigurationBuilderCustomizers , clientOptionsBuilderCustomizers ,
116
+ clientResources , getProperties ().getLettuce ().getPool ());
114
117
return createLettuceConnectionFactory (clientConfig );
115
118
}
116
119
@@ -125,16 +128,17 @@ private LettuceConnectionFactory createLettuceConnectionFactory(LettuceClientCon
125
128
}
126
129
127
130
private LettuceClientConfiguration getLettuceClientConfiguration (
128
- ObjectProvider <LettuceClientConfigurationBuilderCustomizer > builderCustomizers ,
131
+ ObjectProvider <LettuceClientConfigurationBuilderCustomizer > clientConfigurationBuilderCustomizers ,
132
+ ObjectProvider <LettuceClientOptionsBuilderCustomizer > clientOptionsBuilderCustomizers ,
129
133
ClientResources clientResources , Pool pool ) {
130
134
LettuceClientConfigurationBuilder builder = createBuilder (pool );
131
135
applyProperties (builder );
132
136
if (StringUtils .hasText (getProperties ().getUrl ())) {
133
137
customizeConfigurationFromUrl (builder );
134
138
}
135
- builder .clientOptions (createClientOptions ());
139
+ builder .clientOptions (createClientOptions (clientOptionsBuilderCustomizers ));
136
140
builder .clientResources (clientResources );
137
- builderCustomizers .orderedStream ().forEach ((customizer ) -> customizer .customize (builder ));
141
+ clientConfigurationBuilderCustomizers .orderedStream ().forEach ((customizer ) -> customizer .customize (builder ));
138
142
return builder .build ();
139
143
}
140
144
@@ -163,7 +167,7 @@ private void applyProperties(LettuceClientConfiguration.LettuceClientConfigurati
163
167
}
164
168
}
165
169
166
- private ClientOptions createClientOptions () {
170
+ private ClientOptions createClientOptions (ObjectProvider < LettuceClientOptionsBuilderCustomizer > clientConfigurationBuilderCustomizers ) {
167
171
ClientOptions .Builder builder = initializeClientOptionsBuilder ();
168
172
Duration connectTimeout = getProperties ().getConnectTimeout ();
169
173
if (connectTimeout != null ) {
@@ -183,7 +187,9 @@ private ClientOptions createClientOptions() {
183
187
}
184
188
builder .sslOptions (sslOptionsBuilder .build ());
185
189
}
186
- return builder .timeoutOptions (TimeoutOptions .enabled ()).build ();
190
+ builder .timeoutOptions (TimeoutOptions .enabled ());
191
+ clientConfigurationBuilderCustomizers .orderedStream ().forEach ((customizer ) -> customizer .customize (builder ));
192
+ return builder .build ();
187
193
}
188
194
189
195
private ClientOptions .Builder initializeClientOptionsBuilder () {
0 commit comments