Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
spring-cloud-netflix
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
openSource
spring-cloud-netflix
Commits
a708ceef
Commit
a708ceef
authored
Apr 20, 2017
by
Ryan Baxter
Committed by
GitHub
Apr 20, 2017
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1870 from ryanjbaxter/force-eurekaclient-creation-on-refresh
Make sure the EurekaClient bean is recreated after refresh.
parents
cebbcf59
1f12902f
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
115 additions
and
0 deletions
+115
-0
EurekaDiscoveryClientConfiguration.java
...ud/netflix/eureka/EurekaDiscoveryClientConfiguration.java
+8
-0
ConfigRefreshTests.java
...ework/cloud/netflix/eureka/config/ConfigRefreshTests.java
+60
-0
RefreshEurekaSampleApplication.java
...netflix/eureka/sample/RefreshEurekaSampleApplication.java
+47
-0
No files found.
spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/EurekaDiscoveryClientConfiguration.java
View file @
a708ceef
...
...
@@ -62,10 +62,18 @@ public class EurekaDiscoveryClientConfiguration {
protected
static
class
EurekaClientConfigurationRefresher
{
@Autowired
(
required
=
false
)
private
EurekaClient
eurekaClient
;
@Autowired
(
required
=
false
)
private
EurekaAutoServiceRegistration
autoRegistration
;
@EventListener
(
RefreshScopeRefreshedEvent
.
class
)
public
void
onApplicationEvent
(
RefreshScopeRefreshedEvent
event
)
{
//This will force the creation of the EurkaClient bean if not already created
//to make sure the client will be reregistered after a refresh event
if
(
eurekaClient
!=
null
)
{
eurekaClient
.
getApplications
();
}
if
(
autoRegistration
!=
null
)
{
// register in case meta data changed
this
.
autoRegistration
.
stop
();
...
...
spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/config/ConfigRefreshTests.java
0 → 100644
View file @
a708ceef
/*
*
* * Copyright 2013-2016 the original author or authors.
* *
* * Licensed under the Apache License, Version 2.0 (the "License");
* * you may not use this file except in compliance with the License.
* * You may obtain a copy of the License at
* *
* * http://www.apache.org/licenses/LICENSE-2.0
* *
* * Unless required by applicable law or agreed to in writing, software
* * distributed under the License is distributed on an "AS IS" BASIS,
* * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* * See the License for the specific language governing permissions and
* * limitations under the License.
*
*/
package
org
.
springframework
.
cloud
.
netflix
.
eureka
.
config
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.cloud.context.scope.refresh.RefreshScopeRefreshedEvent
;
import
org.springframework.cloud.netflix.eureka.sample.RefreshEurekaSampleApplication
;
import
org.springframework.context.ApplicationEventPublisher
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
com.netflix.discovery.EurekaClient
;
import
static
org
.
mockito
.
Mockito
.
times
;
import
static
org
.
mockito
.
Mockito
.
verify
;
/**
* @author Ryan Baxter
*/
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
(
webEnvironment
=
SpringBootTest
.
WebEnvironment
.
RANDOM_PORT
,
classes
=
RefreshEurekaSampleApplication
.
class
)
public
class
ConfigRefreshTests
{
@Autowired
private
ApplicationEventPublisher
publisher
;
@Autowired
//Mocked in RefreshEurekaSampleApplication
private
EurekaClient
client
;
@Test
// This test is used to verify that getApplications is called the correct number of times
// when a refresh event is fired. The getApplications call in EurekaClientConfigurationRefresher.onApplicationEvent
// ensures that the EurekaClient bean is recreated after a refresh event and that we reregister the client with
//the server
public
void
verifyGetApplications
()
{
if
(
publisher
!=
null
)
{
publisher
.
publishEvent
(
new
RefreshScopeRefreshedEvent
());
}
verify
(
client
,
times
(
3
)).
getApplications
();
}
}
spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/sample/RefreshEurekaSampleApplication.java
0 → 100644
View file @
a708ceef
/*
*
* * Copyright 2013-2016 the original author or authors.
* *
* * Licensed under the Apache License, Version 2.0 (the "License");
* * you may not use this file except in compliance with the License.
* * You may obtain a copy of the License at
* *
* * http://www.apache.org/licenses/LICENSE-2.0
* *
* * Unless required by applicable law or agreed to in writing, software
* * distributed under the License is distributed on an "AS IS" BASIS,
* * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* * See the License for the specific language governing permissions and
* * limitations under the License.
*
*/
package
org
.
springframework
.
cloud
.
netflix
.
eureka
.
sample
;
import
org.springframework.boot.autoconfigure.EnableAutoConfiguration
;
import
org.springframework.cloud.client.discovery.EnableDiscoveryClient
;
import
org.springframework.cloud.netflix.eureka.CloudEurekaClient
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.ComponentScan
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.web.bind.annotation.RestController
;
import
com.netflix.discovery.EurekaClient
;
import
static
org
.
mockito
.
Mockito
.
mock
;
/**
* @author Ryan Baxter
*/
@Configuration
@ComponentScan
@EnableAutoConfiguration
@RestController
@EnableDiscoveryClient
public
class
RefreshEurekaSampleApplication
{
@Bean
public
EurekaClient
getClient
()
{
return
mock
(
CloudEurekaClient
.
class
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment