Skip to content

Commit 3c2b483

Browse files
committed
Document credentials refresh service
[#167029587] (cherry picked from commit 1c7b21c)
1 parent 9b35230 commit 3c2b483

File tree

2 files changed

+20
-11
lines changed

2 files changed

+20
-11
lines changed

src/main/java/com/rabbitmq/client/ConnectionFactory.java

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,17 +32,8 @@
3232
import java.net.URLDecoder;
3333
import java.security.KeyManagementException;
3434
import java.security.NoSuchAlgorithmException;
35-
import java.util.Arrays;
36-
import java.util.Collections;
37-
import java.util.HashMap;
38-
import java.util.List;
39-
import java.util.Map;
40-
import java.util.Properties;
41-
import java.util.concurrent.ExecutorService;
42-
import java.util.concurrent.Executors;
43-
import java.util.concurrent.ScheduledExecutorService;
44-
import java.util.concurrent.ThreadFactory;
45-
import java.util.concurrent.TimeoutException;
35+
import java.util.*;
36+
import java.util.concurrent.*;
4637
import java.util.function.Predicate;
4738

4839
import static java.util.concurrent.TimeUnit.MINUTES;
@@ -848,6 +839,21 @@ public MetricsCollector getMetricsCollector() {
848839
return metricsCollector;
849840
}
850841

842+
/**
843+
* Set a {@link CredentialsRefreshService} instance to handle credentials refresh if appropriate.
844+
* <p>
845+
* Each created connection will register to the refresh service to send an AMQP <code>update.secret</code>
846+
* frame when credentials are about to expire. This is the refresh service responsibility to schedule
847+
* credentials refresh and <code>udpate.secret</code> frame sending, based on the information provided
848+
* by the {@link CredentialsProvider}.
849+
* <p>
850+
* Note the {@link CredentialsRefreshService} is used only when the {@link CredentialsProvider}
851+
* signals credentials can expire, by returning a non-null value from {@link CredentialsProvider#getTimeBeforeExpiration()}.
852+
*
853+
* @param credentialsRefreshService the refresh service to use
854+
* @see #setCredentialsProvider(CredentialsProvider)
855+
* @see DefaultCredentialsRefreshService
856+
*/
851857
public void setCredentialsRefreshService(CredentialsRefreshService credentialsRefreshService) {
852858
this.credentialsRefreshService = credentialsRefreshService;
853859
}

src/main/java/com/rabbitmq/client/impl/AMQConnection.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,9 @@ public void start()
346346
String password = credentialsProvider.getPassword();
347347

348348
if (credentialsProvider.getTimeBeforeExpiration() != null) {
349+
if (this.credentialsRefreshService == null) {
350+
throw new IllegalStateException("Credentials can expire, a credentials refresh service should be set");
351+
}
349352
if (this.credentialsRefreshService.needRefresh(credentialsProvider.getTimeBeforeExpiration())) {
350353
credentialsProvider.refresh();
351354
username = credentialsProvider.getUsername();

0 commit comments

Comments
 (0)