Ne pouvez pas obtenir Feindre Client de travailler pour un exemple de base
Ne pouvez pas obtenir Feindre Client pour travailler. Tout d'abord essayé avec la POSTE. Restent en cours d'exécution dans les erreurs liées à l'Encodeur/Décodeur dire le type n'est pas droit.
Ensuite trouvé un exemple sur github pour appeler GET simple API enfin et a décidé de donner un coup de feu.
Ne parvient toujours pas
Sur Github et en ligne, je suis de voir plusieurs versions de Feindre Client
Printemps-Cloud, OpenFeign, Netflix.feindre d'avoir des versions différentes.
Quelqu'un pourrait-il décrire ce qui est le meilleur et stable Feindre un seul client doit utiliser pour la production?
package com.paa.controllers;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@FeignClient (name="test-service",url="https://www.reddit.com/r")
public interface GetFeignClient {
@RequestMapping(method = RequestMethod.GET, value = "/java.json")
public String posts();
}
Controller:
@RestController
@RequestMapping("/some/api")
public class TestWLCController {
@Autowired
private GetFeignClient getFeignClient;
.. some stuff
@RequestMapping(value="/postSomething",method = RequestMethod.POST)
@ApiOperation(value = "Configures something",
notes = "basic rest controller for testing feign")
public ResponseEntity<SomeResponse> feignPost(
UriComponentsBuilder builder,
@ApiParam(name = "myRequest",
value = "request for configuring something",
required = true)
@Valid @RequestBody SomeRequest someRequest) {
String resp = null;
try {
resp = getFeignClient.posts();
} catch (Exception er) {
er.printStackTrace();
}
}
}
Application:
Essayé toutes les permutations possibles des annotations pensant qu'il allait résoudre AutoWire des trucs, mais ne parvient toujours pas
@Configuration
@ComponentScan
@EnableAutoConfiguration
//@EnableEurekaClient
@EnableFeignClients
//@SpringBootApplication
//@EnableFeignClients
//@EnableFeignClients(basePackages = {"com.paa.xenia.controllers", "com.paa.xenia.services"})
public class ServiceApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(XeniaServiceApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(ServiceApplication.class, args);
}
}
2016-07-20 18:15:42.406[0;39m [31mERROR[0;39m [35m32749[0;39m
[2m---[0;39m [2m[ principal][0;39m
[36mo.s.de démarrage.SpringApplication [0;39m [2m:[0;39m
Démarrage de l'Application a échouéorg.springframework.les haricots.usine.BeanCreationException: Erreur
la création de haricot avec le nom "testWLCController': Injection de autocâblés
dépendances a échoué; nested exception est
org.springframework.les haricots.usine.BeanCreationException: ne Peut pas
autowire domaine privé: com.aap.les contrôleurs.GetFeignClient
com.aap.les contrôleurs.TestWLCController.gfClient; nested exception est
org.springframework.les haricots.usine.BeanCreationException: Erreur
la création de haricot avec le nom " com.aa..contrôleurs.GetFeignClient':
L'interface factorybean jeté exception sur la création d'un objet; nested exception est
java.lang.NullPointerException à
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)
~[printemps-haricots-4.2.6.La LIBÉRATION.jar:4.2.6.LIBÉRATION]
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)
~[printemps-haricots-4.2.6.La LIBÉRATION.jar:4.2.6.LIBÉRATION]
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
~[printemps-haricots-4.2.6.La LIBÉRATION.jar:4.2.6.LIBÉRATION]
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
~[printemps-haricots-4.2.6.La LIBÉRATION.jar:4.2.6.LIBÉRATION]
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
~[printemps-haricots-4.2.6.La LIBÉRATION.jar:4.2.6.LIBÉRATION]
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
~[printemps-haricots-4.2.6.La LIBÉRATION.jar:4.2.6.LIBÉRATION]
org.springframework.les haricots.usine.de soutien.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
~[printemps-haricots-4.2.6.La LIBÉRATION.jar:4.2.6.LIBÉRATION]
org.springframework.les haricots.usine.de soutien.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
~[printemps-haricots-4.2.6.La LIBÉRATION.jar:4.2.6.LIBÉRATION]
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772)
~[printemps-haricots-4.2.6.La LIBÉRATION.jar:4.2.6.LIBÉRATION]
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839)
~[printemps-contexte-4.2.6.La LIBÉRATION.jar:4.2.6.LIBÉRATION]
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538)
~[printemps-contexte-4.2.6.La LIBÉRATION.jar:4.2.6.LIBÉRATION]
org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
~[spring-boot-1.3.5.La LIBÉRATION.jar:1.3.5.LIBÉRATION]
org.springframework.de démarrage.SpringApplication.refresh(SpringApplication.java:766)
[spring-boot-1.3.5.La LIBÉRATION.jar:1.3.5.LIBÉRATION]
org.springframework.de démarrage.SpringApplication.createAndRefreshContext(SpringApplication.java:361)
[spring-boot-1.3.5.La LIBÉRATION.jar:1.3.5.LIBÉRATION]
org.springframework.de démarrage.SpringApplication.exécuter(SpringApplication.java:307)
[spring-boot-1.3.5.La LIBÉRATION.jar:1.3.5.LIBÉRATION]
org.springframework.de démarrage.SpringApplication.exécuter(SpringApplication.java:1191)
[spring-boot-1.3.5.La LIBÉRATION.jar:1.3.5.LIBÉRATION]
org.springframework.de démarrage.SpringApplication.exécuter(SpringApplication.java:1180)
[spring-boot-1.3.5.La LIBÉRATION.jar:1.3.5.LIBÉRATION]
com.aap.ServiceApplication.principale(ServiceApplication.java:44) [bin/:na]
Causés par: org.springframework.les haricots.usine.BeanCreationException:
Ne pouvait pas autowire domaine privé: com.aap.les contrôleurs.GetFeignClient
com.aap.les contrôleurs.TestWLCController.gfClient; nested exception est
org.springframework.les haricots.usine.BeanCreationException: Erreur
la création de haricot avec le nom " com.aap.les contrôleurs.GetFeignClient':
L'interface factorybean jeté exception sur la création d'un objet; nested exception est
java.lang.NullPointerException à
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:573)
~[printemps-haricots-4.2.6.La LIBÉRATION.jar:4.2.6.LIBÉRATION]
org.springframework.les haricots.usine.annotation.InjectionMetadata.injecter(InjectionMetadata.java:88)
~[printemps-haricots-4.2.6.La LIBÉRATION.jar:4.2.6.LIBÉRATION]
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)
~[printemps-haricots-4.2.6.La LIBÉRATION.jar:4.2.6.COMMUNIQUÉ] ... 17 com.les n images
omis
OriginalL'auteur Rockoder | 2016-07-21
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas sûr si vous finalement pensé à elle-même, mais pour le bien des autres qui pourraient tomber sur ce fil, ci-dessous est un exemple de ce que vous étiez en train de faire. Je vais d'abord de signaler quelques-uns des choses qui sont inexactes, ou au moins, elle n'est pas désirée dans votre code, puis montrer mon code qui fonctionne.
url
attribut. Au lieu de cela, mettre en place une liste de serveurs à l'aide de<feign client name>.ribbon.listOfServers
dansbootstrap.yml
(oubootstrap.properties
). Cela permet pour le côté client équilibrage de la charge, carlistOfServers
peut être une liste séparée par des virgules.listOfServers
et<feign client name>.ribbon.IsSecure: true
. Sans le port, la connexion est effectuée sur le port 80, et sans laIsSecure
, HTTP est utilisé.Tests à l'aide de
curl
, j'ai trouvé que Reddit prend un très du temps à répondre. De voir cette SI post pour les détails de la façon de briser le temps total pris par le cycle de requête-réponse.Selon le Netflix Wiki, la valeur par défaut de lire et de se connecter délais d'attente sont de 3000 millisecondes, donc vous aurez toujours le délai d'attente, sauf si vous modifiez ces.
User-Agent
d'en-tête dans lecurl
demande. C'est parce que Reddis semble être très pointilleux à ce sujet et si non spécifié, retourne un HTTP 429 "Trop de demandes", la plupart du temps. Ils ne retournent pas unRetry-After
tête dans la réponse, donc il n'y a pas dire combien de temps vous devez attendre avant de faire une autre demande."Talk est bon marché. Show me the code". (Torvalds Linus (2000-08-25)).
J'ai généré un Gradle application à l'aide de l'excellent Printemps Initializr site. Voici un extrait de la
build.gradle
fichier.Feindre client:
Application De Démarrage:
bootstrap.yml:
Test d'intégration:
Le point que j'ai essayé de clarifier a été nous avons utilisé Feindre, sans Ruban. Si le Ruban n'est pas obligatoire d'utiliser Feindre ====feindre: hystrix: enabled: false source de données: vérification: mongodb: host: localhost port: 27019 base de données: vérification ===
Vous avez été capable de faire ce travail. Avez-vous un exemple de code?
oui a réussi à le faire fonctionner, même si se code serait peu délicat. Fondamentalement, nous avons créé un module parent servant de notre cadre et utilisé Feindre. Le module utilisé Feindre de ne pas avoir à déclarer Feindre explicitement dans les classes enfant. Aussi, printemps version est important. Nous étions sur 3.5. J'ai appris à partir d'un co-travailleur, quand ils ont essayé d'utiliser une version ultérieure, ils sont confrontés à des problèmes et ils ont fini par revenir à la version que nous étions sur de le faire fonctionner.
les commentaires ont restriction, de sorte que j'ai posté la réponse pour vous. Espérons que cela aide. Tous les composants essentiels/classes squelette d'obtenir ce travail est-il. Laissez-moi savoir si cela fonctionne. En outre, la version 3.5 je l'ai mentionné ci-dessus a été mal par erreur. Il est 1.3.5.
OriginalL'auteur Abhijit Sarkar
Quelqu'un était intéressé pour savoir comment avons-nous fait en sorte de poster de réponse à leur avantage.
Module Parent
Enfant Module
bootstrap.yml
OriginalL'auteur Rockoder