丁云鹏 1 year ago
parent
commit
aa2acea7d1
50 changed files with 2334 additions and 869 deletions
  1. 0 0
      logs/recommend-server/log_debug.log
  2. 136 0
      logs/recommend-server/log_error.log
  3. 110 0
      logs/recommend-server/log_info.log
  4. 98 0
      logs/recommend-server/log_warn.log
  5. 1 76
      pom.xml
  6. 38 48
      recommend-server-client/pom.xml
  7. 11 0
      recommend-server-client/src/main/java/com/tzld/piaoquan/recommend/server/client/HelloClient.java
  8. 62 0
      recommend-server-client/src/main/java/com/tzld/piaoquan/recommend/server/gen/demo/Hello.java
  9. 557 0
      recommend-server-client/src/main/java/com/tzld/piaoquan/recommend/server/gen/demo/HelloRequest.java
  10. 21 0
      recommend-server-client/src/main/java/com/tzld/piaoquan/recommend/server/gen/demo/HelloRequestOrBuilder.java
  11. 557 0
      recommend-server-client/src/main/java/com/tzld/piaoquan/recommend/server/gen/demo/HelloResponse.java
  12. 21 0
      recommend-server-client/src/main/java/com/tzld/piaoquan/recommend/server/gen/demo/HelloResponseOrBuilder.java
  13. 237 0
      recommend-server-client/src/main/java/com/tzld/piaoquan/recommend/server/gen/demo/HelloService.java
  14. 288 0
      recommend-server-client/src/main/java/com/tzld/piaoquan/recommend/server/gen/demo/HelloServiceGrpc.java
  15. 18 0
      recommend-server-client/src/main/proto/com/tzld/piaoquan/recommend/server/hello.proto
  16. 0 19
      recommend-server-runner/pom.xml
  17. 0 27
      recommend-server-runner/src/main/java/server/Application.java
  18. 117 0
      recommend-server-service/pom.xml
  19. 17 0
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/Application.java
  20. 0 11
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/common/base/CacheKeyConstant.java
  21. 0 40
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/common/base/CommonRequest.java
  22. 0 97
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/common/base/CommonResponse.java
  23. 1 1
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/common/base/Constant.java
  24. 1 1
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/common/enums/AppTypeEnum.java
  25. 1 1
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/common/enums/ExceptionEnum.java
  26. 1 1
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/common/enums/PlatformEnum.java
  27. 2 2
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/common/exception/CommonException.java
  28. 1 1
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/common/exception/HttpServiceException.java
  29. 1 1
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/common/exception/TimeoutException.java
  30. 1 1
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/config/RedisTemplateConfig.java
  31. 0 54
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/config/SwaggerConfig.java
  32. 1 1
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/dao/generator/MybatisGeneratorMain.java
  33. 0 79
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/handle/GlobalExceptionHandle.java
  34. 0 21
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/handle/SentinelBlockExceptionHandler.java
  35. 0 40
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/interceptor/AbTestInterceptor.java
  36. 0 170
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/model/dto/BaseInfoDTO.java
  37. 1 1
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/model/dto/PageDTO.java
  38. 0 24
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/model/param/ExampleParam.java
  39. 0 23
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/model/vo/ExampleVO.java
  40. 0 14
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/ExampleService.java
  41. 19 0
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/HelloService.java
  42. 0 104
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/impl/ExampleServiceImpl.java
  43. 1 1
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/util/HttpClientUtil.java
  44. 3 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/util/HttpPoolClient.java
  45. 5 1
      recommend-server-service/src/main/resources/application-dev.yml
  46. 0 0
      recommend-server-service/src/main/resources/application-pre.yml
  47. 0 0
      recommend-server-service/src/main/resources/application-prod.yml
  48. 0 0
      recommend-server-service/src/main/resources/application-test.yml
  49. 1 1
      recommend-server-service/src/main/resources/application.yml
  50. 5 5
      recommend-server-service/src/main/resources/logback-spring.xml

+ 0 - 0
logs/recommend-server/log_debug.log


+ 136 - 0
logs/recommend-server/log_error.log

@@ -0,0 +1,136 @@
+2023-10-30 15:35:31.858 [main] ERROR org.springframework.boot.SpringApplication(856) - Application run failed
+java.lang.IllegalArgumentException: Sources must not be empty
+	at org.springframework.util.Assert.notEmpty(Assert.java:470)
+	at org.springframework.boot.SpringApplication.prepareContext(SpringApplication.java:412)
+	at org.springframework.boot.SpringApplication.run(SpringApplication.java:325)
+	at com.tzld.piaoquan.recommend.server.Application.main(Application.java:16)
+2023-10-30 15:37:24.410 [main] ERROR o.s.b.diagnostics.LoggingFailureAnalysisReporter(40) - 
+
+***************************
+APPLICATION FAILED TO START
+***************************
+
+Description:
+
+Field optionalArgs in org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration$RefreshableEurekaClientConfiguration required a bean of type 'com.netflix.discovery.AbstractDiscoveryClientOptionalArgs' that could not be found.
+
+The injection point has the following annotations:
+	- @org.springframework.beans.factory.annotation.Autowired(required=true)
+
+
+Action:
+
+Consider defining a bean of type 'com.netflix.discovery.AbstractDiscoveryClientOptionalArgs' in your configuration.
+
+2023-10-30 15:41:33.579 [main] ERROR o.s.c.n.eureka.serviceregistry.EurekaRegistration(118) - error getting CloudEurekaClient
+org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'scopedTarget.eurekaClient' defined in class path resource [org/springframework/cloud/netflix/eureka/EurekaClientAutoConfiguration$RefreshableEurekaClientConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.netflix.discovery.EurekaClient]: Factory method 'eurekaClient' threw exception; nested exception is java.lang.RuntimeException: Failed to initialize DiscoveryClient!
+	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:658)
+	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:638)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1336)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1179)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:571)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:531)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$1(AbstractBeanFactory.java:374)
+	at org.springframework.cloud.context.scope.GenericScope$BeanLifecycleWrapper.getBean(GenericScope.java:381)
+	at org.springframework.cloud.context.scope.GenericScope.get(GenericScope.java:184)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:371)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
+	at org.springframework.aop.target.SimpleBeanTargetSource.getTarget(SimpleBeanTargetSource.java:35)
+	at org.springframework.cloud.netflix.eureka.serviceregistry.EurekaRegistration.getTargetObject(EurekaRegistration.java:127)
+	at org.springframework.cloud.netflix.eureka.serviceregistry.EurekaRegistration.getEurekaClient(EurekaRegistration.java:115)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.lang.reflect.Method.invoke(Method.java:498)
+	at org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:282)
+	at org.springframework.cloud.context.scope.GenericScope$LockedScopedProxyFactoryBean.invoke(GenericScope.java:490)
+	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
+	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)
+	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:692)
+	at org.springframework.cloud.netflix.eureka.serviceregistry.EurekaRegistration$$EnhancerBySpringCGLIB$$cee73c63.getEurekaClient(<generated>)
+	at org.springframework.cloud.netflix.eureka.serviceregistry.EurekaServiceRegistry.maybeInitializeClient(EurekaServiceRegistry.java:54)
+	at org.springframework.cloud.netflix.eureka.serviceregistry.EurekaServiceRegistry.register(EurekaServiceRegistry.java:38)
+	at org.springframework.cloud.netflix.eureka.serviceregistry.EurekaAutoServiceRegistration.start(EurekaAutoServiceRegistration.java:83)
+	at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:178)
+	at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:54)
+	at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:356)
+	at java.lang.Iterable.forEach(Iterable.java:75)
+	at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:155)
+	at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:123)
+	at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:940)
+	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:591)
+	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:144)
+	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:767)
+	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759)
+	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:426)
+	at org.springframework.boot.SpringApplication.run(SpringApplication.java:326)
+	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1311)
+	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1300)
+	at com.tzld.piaoquan.recommend.server.Application.main(Application.java:15)
+Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.netflix.discovery.EurekaClient]: Factory method 'eurekaClient' threw exception; nested exception is java.lang.RuntimeException: Failed to initialize DiscoveryClient!
+	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
+	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653)
+	... 42 common frames omitted
+Caused by: java.lang.RuntimeException: Failed to initialize DiscoveryClient!
+	at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.java:436)
+	at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.java:283)
+	at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.java:279)
+	at org.springframework.cloud.netflix.eureka.CloudEurekaClient.<init>(CloudEurekaClient.java:66)
+	at org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration$RefreshableEurekaClientConfiguration.eurekaClient(EurekaClientAutoConfiguration.java:290)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.lang.reflect.Method.invoke(Method.java:498)
+	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
+	... 43 common frames omitted
+Caused by: java.lang.NoClassDefFoundError: com/sun/jersey/client/apache4/config/DefaultApacheHttpClient4Config
+	at java.lang.ClassLoader.defineClass1(Native Method)
+	at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
+	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
+	at java.net.URLClassLoader.defineClass(URLClassLoader.java:473)
+	at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
+	at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
+	at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
+	at java.security.AccessController.doPrivileged(Native Method)
+	at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
+	at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
+	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
+	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
+	at com.netflix.discovery.shared.transport.jersey.EurekaJerseyClientImpl$EurekaJerseyClientBuilder.build(EurekaJerseyClientImpl.java:183)
+	at com.netflix.discovery.shared.transport.jersey.JerseyEurekaHttpClientFactory$JerseyEurekaHttpClientFactoryBuilder.buildLegacy(JerseyEurekaHttpClientFactory.java:230)
+	at com.netflix.discovery.shared.transport.jersey.JerseyEurekaHttpClientFactory$JerseyEurekaHttpClientFactoryBuilder.build(JerseyEurekaHttpClientFactory.java:204)
+	at com.netflix.discovery.shared.transport.jersey.JerseyEurekaHttpClientFactory.create(JerseyEurekaHttpClientFactory.java:161)
+	at com.netflix.discovery.shared.transport.jersey.Jersey1TransportClientFactories.newTransportClientFactory(Jersey1TransportClientFactories.java:59)
+	at com.netflix.discovery.DiscoveryClient.scheduleServerEndpointTask(DiscoveryClient.java:528)
+	at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.java:423)
+	... 52 common frames omitted
+Caused by: java.lang.ClassNotFoundException: com.sun.jersey.client.apache4.config.DefaultApacheHttpClient4Config
+	at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
+	at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
+	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
+	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
+	... 71 common frames omitted
+2023-10-30 15:41:33.678 [main] ERROR org.springframework.boot.SpringApplication(856) - Application run failed
+org.springframework.context.ApplicationContextException: Failed to start bean 'eurekaAutoServiceRegistration'; nested exception is java.lang.NullPointerException
+	at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:181)
+	at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:54)
+	at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:356)
+	at java.lang.Iterable.forEach(Iterable.java:75)
+	at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:155)
+	at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:123)
+	at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:940)
+	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:591)
+	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:144)
+	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:767)
+	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759)
+	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:426)
+	at org.springframework.boot.SpringApplication.run(SpringApplication.java:326)
+	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1311)
+	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1300)
+	at com.tzld.piaoquan.recommend.server.Application.main(Application.java:15)
+Caused by: java.lang.NullPointerException: null
+	at org.springframework.cloud.netflix.eureka.serviceregistry.EurekaServiceRegistry.maybeInitializeClient(EurekaServiceRegistry.java:54)
+	at org.springframework.cloud.netflix.eureka.serviceregistry.EurekaServiceRegistry.register(EurekaServiceRegistry.java:38)
+	at org.springframework.cloud.netflix.eureka.serviceregistry.EurekaAutoServiceRegistration.start(EurekaAutoServiceRegistration.java:83)
+	at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:178)
+	... 15 common frames omitted

+ 110 - 0
logs/recommend-server/log_info.log

@@ -0,0 +1,110 @@
+2023-10-30 15:35:19.907 [background-preinit] INFO  org.hibernate.validator.internal.util.Version(21) - HV000001: Hibernate Validator 6.1.7.Final
+2023-10-30 15:35:19.989 [main] INFO  c.c.f.f.i.provider.DefaultApplicationProvider(100) - App ID is set to recommend-sort by app.id property from System Property
+2023-10-30 15:35:19.998 [main] INFO  c.c.f.f.internals.provider.DefaultServerProvider(176) - Environment is set to null. Because it is not available in either (1) JVM system property 'env', (2) OS env variable 'ENV' nor (3) property 'env' from the properties InputStream.
+2023-10-30 15:35:20.032 [main] INFO  c.c.f.apollo.internals.DefaultMetaServerProvider(42) - Located meta services from apollo.meta configuration: http://devapolloconfig-internal.piaoquantv.com!
+2023-10-30 15:35:20.035 [main] INFO  com.ctrip.framework.apollo.core.MetaDomainConsts(93) - Located meta server address http://devapolloconfig-internal.piaoquantv.com for env UNKNOWN from com.ctrip.framework.apollo.internals.DefaultMetaServerProvider
+2023-10-30 15:35:31.819 [main] INFO  com.tzld.piaoquan.recommend.server.Application(55) - Starting Application using Java 1.8.0_361 on dingyunpengdeMacBook-Pro.local with PID 56729 (/Users/dingyunpeng/Desktop/code/pq/recommend-server/recommend-server-service/target/classes started by dingyunpeng in /Users/dingyunpeng/Desktop/code/pq)
+2023-10-30 15:35:31.822 [main] INFO  com.tzld.piaoquan.recommend.server.Application(664) - The following profiles are active: dev
+2023-10-30 15:37:10.589 [background-preinit] INFO  org.hibernate.validator.internal.util.Version(21) - HV000001: Hibernate Validator 6.1.7.Final
+2023-10-30 15:37:10.662 [main] INFO  c.c.f.f.i.provider.DefaultApplicationProvider(100) - App ID is set to recommend-sort by app.id property from System Property
+2023-10-30 15:37:10.668 [main] INFO  c.c.f.f.internals.provider.DefaultServerProvider(176) - Environment is set to null. Because it is not available in either (1) JVM system property 'env', (2) OS env variable 'ENV' nor (3) property 'env' from the properties InputStream.
+2023-10-30 15:37:10.711 [main] INFO  c.c.f.apollo.internals.DefaultMetaServerProvider(42) - Located meta services from apollo.meta configuration: http://devapolloconfig-internal.piaoquantv.com!
+2023-10-30 15:37:10.719 [main] INFO  com.ctrip.framework.apollo.core.MetaDomainConsts(93) - Located meta server address http://devapolloconfig-internal.piaoquantv.com for env UNKNOWN from com.ctrip.framework.apollo.internals.DefaultMetaServerProvider
+2023-10-30 15:37:22.778 [main] INFO  com.tzld.piaoquan.recommend.server.Application(55) - Starting Application using Java 1.8.0_361 on dingyunpengdeMacBook-Pro.local with PID 56744 (/Users/dingyunpeng/Desktop/code/pq/recommend-server/recommend-server-service/target/classes started by dingyunpeng in /Users/dingyunpeng/Desktop/code/pq)
+2023-10-30 15:37:22.785 [main] INFO  com.tzld.piaoquan.recommend.server.Application(664) - The following profiles are active: dev
+2023-10-30 15:37:23.398 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate(250) - Multiple Spring Data modules found, entering strict repository configuration mode!
+2023-10-30 15:37:23.401 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate(128) - Bootstrapping Spring Data Redis repositories in DEFAULT mode.
+2023-10-30 15:37:23.447 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate(188) - Finished Spring Data repository scanning in 37 ms. Found 0 Redis repository interfaces.
+2023-10-30 15:37:23.667 [main] INFO  o.s.c.annotation.ConfigurationClassPostProcessor(422) - Cannot enhance @Configuration bean definition 'com.ctrip.framework.apollo.spring.boot.ApolloAutoConfiguration' since its singleton instance has been created too early. The typical cause is a non-static @Bean method with a BeanDefinitionRegistryPostProcessor return type: Consider declaring such methods as 'static'.
+2023-10-30 15:37:23.760 [main] INFO  o.springframework.cloud.context.scope.GenericScope(288) - BeanFactory id=a5dda9fc-9399-3e4b-9685-b2929c3cb96e
+2023-10-30 15:37:24.395 [main] INFO  o.s.b.a.l.ConditionEvaluationReportLoggingListener(136) - 
+
+Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
+2023-10-30 15:41:18.058 [background-preinit] INFO  org.hibernate.validator.internal.util.Version(21) - HV000001: Hibernate Validator 6.1.7.Final
+2023-10-30 15:41:18.138 [main] INFO  c.c.f.f.i.provider.DefaultApplicationProvider(100) - App ID is set to recommend-sort by app.id property from System Property
+2023-10-30 15:41:18.143 [main] INFO  c.c.f.f.internals.provider.DefaultServerProvider(176) - Environment is set to null. Because it is not available in either (1) JVM system property 'env', (2) OS env variable 'ENV' nor (3) property 'env' from the properties InputStream.
+2023-10-30 15:41:18.176 [main] INFO  c.c.f.apollo.internals.DefaultMetaServerProvider(42) - Located meta services from apollo.meta configuration: http://devapolloconfig-internal.piaoquantv.com!
+2023-10-30 15:41:18.184 [main] INFO  com.ctrip.framework.apollo.core.MetaDomainConsts(93) - Located meta server address http://devapolloconfig-internal.piaoquantv.com for env UNKNOWN from com.ctrip.framework.apollo.internals.DefaultMetaServerProvider
+2023-10-30 15:41:29.964 [main] INFO  com.tzld.piaoquan.recommend.server.Application(55) - Starting Application using Java 1.8.0_361 on dingyunpengdeMacBook-Pro.local with PID 56793 (/Users/dingyunpeng/Desktop/code/pq/recommend-server/recommend-server-service/target/classes started by dingyunpeng in /Users/dingyunpeng/Desktop/code/pq)
+2023-10-30 15:41:29.972 [main] INFO  com.tzld.piaoquan.recommend.server.Application(664) - The following profiles are active: dev
+2023-10-30 15:41:30.977 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate(250) - Multiple Spring Data modules found, entering strict repository configuration mode!
+2023-10-30 15:41:30.980 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate(128) - Bootstrapping Spring Data Redis repositories in DEFAULT mode.
+2023-10-30 15:41:31.022 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate(188) - Finished Spring Data repository scanning in 33 ms. Found 0 Redis repository interfaces.
+2023-10-30 15:41:31.156 [main] INFO  o.s.c.annotation.ConfigurationClassPostProcessor(422) - Cannot enhance @Configuration bean definition 'com.ctrip.framework.apollo.spring.boot.ApolloAutoConfiguration' since its singleton instance has been created too early. The typical cause is a non-static @Bean method with a BeanDefinitionRegistryPostProcessor return type: Consider declaring such methods as 'static'.
+2023-10-30 15:41:31.246 [main] INFO  o.springframework.cloud.context.scope.GenericScope(288) - BeanFactory id=3e6ae75b-be67-3162-ac12-17c6d3cac94c
+2023-10-30 15:41:31.492 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker(350) - Bean 'spring.cloud.sentinel-com.alibaba.cloud.sentinel.SentinelProperties' of type [com.alibaba.cloud.sentinel.SentinelProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2023-10-30 15:41:31.501 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker(350) - Bean 'com.alibaba.cloud.sentinel.custom.SentinelAutoConfiguration' of type [com.alibaba.cloud.sentinel.custom.SentinelAutoConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2023-10-30 15:41:31.758 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer(108) - Tomcat initialized with port(s): 8080 (http)
+2023-10-30 15:41:31.764 [main] INFO  org.apache.coyote.http11.Http11NioProtocol(173) - Initializing ProtocolHandler ["http-nio-8080"]
+2023-10-30 15:41:31.765 [main] INFO  org.apache.catalina.core.StandardService(173) - Starting service [Tomcat]
+2023-10-30 15:41:31.765 [main] INFO  org.apache.catalina.core.StandardEngine(173) - Starting Servlet engine: [Apache Tomcat/9.0.41]
+2023-10-30 15:41:31.827 [main] INFO  o.a.c.c.C.[Tomcat].[localhost].[/recommend-sort](173) - Initializing Spring embedded WebApplicationContext
+2023-10-30 15:41:31.828 [main] INFO  o.s.b.w.s.c.ServletWebServerApplicationContext(289) - Root WebApplicationContext: initialization completed in 1784 ms
+2023-10-30 15:41:32.199 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor(181) - Initializing ExecutorService 'applicationTaskExecutor'
+2023-10-30 15:41:32.229 [main] INFO  c.a.cloud.sentinel.SentinelWebAutoConfiguration(80) - [Sentinel Starter] register SentinelWebInterceptor with urlPatterns: [/**].
+2023-10-30 15:41:32.500 [main] INFO  o.s.c.n.e.c.DiscoveryClientOptionalArgsConfiguration(87) - Eureka HTTP Client uses Jersey
+2023-10-30 15:41:33.473 [main] INFO  o.s.b.actuate.endpoint.web.EndpointLinksResolver(58) - Exposing 2 endpoint(s) beneath base path '/actuator'
+2023-10-30 15:41:33.558 [main] INFO  o.s.cloud.netflix.eureka.InstanceInfoFactory(67) - Setting initial instance status as: STARTING
+2023-10-30 15:41:33.574 [main] INFO  com.netflix.discovery.DiscoveryClient(372) - Initializing Eureka in region us-east-1
+2023-10-30 15:41:33.598 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor(218) - Shutting down ExecutorService 'applicationTaskExecutor'
+2023-10-30 15:41:33.611 [main] INFO  org.apache.catalina.core.StandardService(173) - Stopping service [Tomcat]
+2023-10-30 15:41:33.659 [main] INFO  o.s.b.a.l.ConditionEvaluationReportLoggingListener(136) - 
+
+Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
+2023-10-30 15:56:15.418 [background-preinit] INFO  org.hibernate.validator.internal.util.Version(21) - HV000001: Hibernate Validator 6.1.7.Final
+2023-10-30 15:56:15.521 [main] INFO  c.c.f.f.i.provider.DefaultApplicationProvider(100) - App ID is set to recommend-sort by app.id property from System Property
+2023-10-30 15:56:15.531 [main] INFO  c.c.f.f.internals.provider.DefaultServerProvider(176) - Environment is set to null. Because it is not available in either (1) JVM system property 'env', (2) OS env variable 'ENV' nor (3) property 'env' from the properties InputStream.
+2023-10-30 15:56:15.567 [main] INFO  c.c.f.apollo.internals.DefaultMetaServerProvider(42) - Located meta services from apollo.meta configuration: http://devapolloconfig-internal.piaoquantv.com!
+2023-10-30 15:56:15.573 [main] INFO  com.ctrip.framework.apollo.core.MetaDomainConsts(93) - Located meta server address http://devapolloconfig-internal.piaoquantv.com for env UNKNOWN from com.ctrip.framework.apollo.internals.DefaultMetaServerProvider
+2023-10-30 15:56:27.375 [main] INFO  com.tzld.piaoquan.recommend.server.Application(55) - Starting Application using Java 1.8.0_361 on dingyunpengdeMacBook-Pro.local with PID 56935 (/Users/dingyunpeng/Desktop/code/pq/recommend-server/recommend-server-service/target/classes started by dingyunpeng in /Users/dingyunpeng/Desktop/code/pq)
+2023-10-30 15:56:27.382 [main] INFO  com.tzld.piaoquan.recommend.server.Application(664) - The following profiles are active: dev
+2023-10-30 15:56:28.440 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate(250) - Multiple Spring Data modules found, entering strict repository configuration mode!
+2023-10-30 15:56:28.443 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate(128) - Bootstrapping Spring Data Redis repositories in DEFAULT mode.
+2023-10-30 15:56:28.486 [main] INFO  o.s.d.r.config.RepositoryConfigurationDelegate(188) - Finished Spring Data repository scanning in 34 ms. Found 0 Redis repository interfaces.
+2023-10-30 15:56:28.622 [main] INFO  o.s.c.annotation.ConfigurationClassPostProcessor(422) - Cannot enhance @Configuration bean definition 'com.ctrip.framework.apollo.spring.boot.ApolloAutoConfiguration' since its singleton instance has been created too early. The typical cause is a non-static @Bean method with a BeanDefinitionRegistryPostProcessor return type: Consider declaring such methods as 'static'.
+2023-10-30 15:56:28.710 [main] INFO  o.springframework.cloud.context.scope.GenericScope(288) - BeanFactory id=3e6ae75b-be67-3162-ac12-17c6d3cac94c
+2023-10-30 15:56:28.958 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker(350) - Bean 'spring.cloud.sentinel-com.alibaba.cloud.sentinel.SentinelProperties' of type [com.alibaba.cloud.sentinel.SentinelProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2023-10-30 15:56:28.966 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker(350) - Bean 'com.alibaba.cloud.sentinel.custom.SentinelAutoConfiguration' of type [com.alibaba.cloud.sentinel.custom.SentinelAutoConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
+2023-10-30 15:56:29.207 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer(108) - Tomcat initialized with port(s): 8080 (http)
+2023-10-30 15:56:29.214 [main] INFO  org.apache.coyote.http11.Http11NioProtocol(173) - Initializing ProtocolHandler ["http-nio-8080"]
+2023-10-30 15:56:29.214 [main] INFO  org.apache.catalina.core.StandardService(173) - Starting service [Tomcat]
+2023-10-30 15:56:29.215 [main] INFO  org.apache.catalina.core.StandardEngine(173) - Starting Servlet engine: [Apache Tomcat/9.0.41]
+2023-10-30 15:56:29.284 [main] INFO  o.a.c.c.C.[Tomcat].[localhost].[/recommend-sort](173) - Initializing Spring embedded WebApplicationContext
+2023-10-30 15:56:29.285 [main] INFO  o.s.b.w.s.c.ServletWebServerApplicationContext(289) - Root WebApplicationContext: initialization completed in 1830 ms
+2023-10-30 15:56:29.710 [main] INFO  o.s.scheduling.concurrent.ThreadPoolTaskExecutor(181) - Initializing ExecutorService 'applicationTaskExecutor'
+2023-10-30 15:56:29.801 [main] INFO  c.a.cloud.sentinel.SentinelWebAutoConfiguration(80) - [Sentinel Starter] register SentinelWebInterceptor with urlPatterns: [/**].
+2023-10-30 15:56:30.110 [main] INFO  o.s.c.n.e.c.DiscoveryClientOptionalArgsConfiguration(87) - Eureka HTTP Client uses Jersey
+2023-10-30 15:56:30.909 [main] INFO  o.s.b.actuate.endpoint.web.EndpointLinksResolver(58) - Exposing 2 endpoint(s) beneath base path '/actuator'
+2023-10-30 15:56:30.996 [main] INFO  o.s.cloud.netflix.eureka.InstanceInfoFactory(67) - Setting initial instance status as: STARTING
+2023-10-30 15:56:31.011 [main] INFO  com.netflix.discovery.DiscoveryClient(372) - Initializing Eureka in region us-east-1
+2023-10-30 15:56:31.037 [main] INFO  c.n.discovery.provider.DiscoveryJerseyProvider(70) - Using JSON encoding codec LegacyJacksonJson
+2023-10-30 15:56:31.037 [main] INFO  c.n.discovery.provider.DiscoveryJerseyProvider(71) - Using JSON decoding codec LegacyJacksonJson
+2023-10-30 15:56:31.122 [main] INFO  c.n.discovery.provider.DiscoveryJerseyProvider(80) - Using XML encoding codec XStreamXml
+2023-10-30 15:56:31.124 [main] INFO  c.n.discovery.provider.DiscoveryJerseyProvider(81) - Using XML decoding codec XStreamXml
+2023-10-30 15:56:31.255 [main] INFO  c.n.d.shared.resolver.aws.ConfigClusterResolver(43) - Resolving eureka endpoints via configuration
+2023-10-30 15:56:31.264 [main] INFO  com.netflix.discovery.DiscoveryClient(1007) - Disable delta property : false
+2023-10-30 15:56:31.264 [main] INFO  com.netflix.discovery.DiscoveryClient(1008) - Single vip registry refresh property : null
+2023-10-30 15:56:31.264 [main] INFO  com.netflix.discovery.DiscoveryClient(1009) - Force full registry fetch : false
+2023-10-30 15:56:31.264 [main] INFO  com.netflix.discovery.DiscoveryClient(1010) - Application is null : false
+2023-10-30 15:56:31.264 [main] INFO  com.netflix.discovery.DiscoveryClient(1011) - Registered Applications size is zero : true
+2023-10-30 15:56:31.265 [main] INFO  com.netflix.discovery.DiscoveryClient(1013) - Application version is -1: true
+2023-10-30 15:56:31.265 [main] INFO  com.netflix.discovery.DiscoveryClient(1097) - Getting all instance registry info from the eureka server
+2023-10-30 15:56:31.421 [main] INFO  com.netflix.discovery.DiscoveryClient(1106) - The response status is 200
+2023-10-30 15:56:31.427 [main] INFO  com.netflix.discovery.DiscoveryClient(1321) - Starting heartbeat executor: renew interval is: 10
+2023-10-30 15:56:31.430 [main] INFO  com.netflix.discovery.InstanceInfoReplicator(60) - InstanceInfoReplicator onDemand update allowed rate per min is 4
+2023-10-30 15:56:31.432 [main] INFO  com.netflix.discovery.DiscoveryClient(492) - Discovery Client initialized at timestamp 1698652591431 with initial instances count: 6
+2023-10-30 15:56:31.445 [main] INFO  o.s.c.n.e.serviceregistry.EurekaServiceRegistry(41) - Registering application RECOMMEND-SERVER with eureka with status UP
+2023-10-30 15:56:31.446 [main] INFO  com.netflix.discovery.DiscoveryClient(1352) - Saw local status change event StatusChangeEvent [timestamp=1698652591446, current=UP, previous=STARTING]
+2023-10-30 15:56:31.449 [DiscoveryClient-InstanceInfoReplicator-0] INFO  com.netflix.discovery.DiscoveryClient(873) - DiscoveryClient_RECOMMEND-SERVER/192.168.80.15:recommend-server:8080: registering service...
+2023-10-30 15:56:31.455 [main] INFO  org.apache.coyote.http11.Http11NioProtocol(173) - Starting ProtocolHandler ["http-nio-8080"]
+2023-10-30 15:56:31.492 [main] INFO  o.s.boot.web.embedded.tomcat.TomcatWebServer(220) - Tomcat started on port(s): 8080 (http) with context path '/recommend-sort'
+2023-10-30 15:56:31.498 [main] INFO  o.s.c.n.e.s.EurekaAutoServiceRegistration(144) - Updating port to 8080
+2023-10-30 15:56:31.526 [main] INFO  n.d.b.g.s.serverfactory.AbstractGrpcServerFactory(115) - Registered gRPC service: HelloService, bean: helloService, class: com.tzld.piaoquan.recommend.server.service.HelloService
+2023-10-30 15:56:31.530 [DiscoveryClient-InstanceInfoReplicator-0] INFO  com.netflix.discovery.DiscoveryClient(882) - DiscoveryClient_RECOMMEND-SERVER/192.168.80.15:recommend-server:8080 - registration status: 204
+2023-10-30 15:56:36.599 [main] INFO  n.d.b.g.server.serverfactory.GrpcServerLifecycle(91) - gRPC Server started, listening on address: *, port: 9090
+2023-10-30 15:56:36.641 [main] INFO  com.tzld.piaoquan.recommend.server.Application(61) - Started Application in 47.131 seconds (JVM running for 52.808)
+2023-10-30 15:56:37.361 [RMI TCP Connection(2)-192.168.80.15] INFO  o.a.c.c.C.[Tomcat].[localhost].[/recommend-sort](173) - Initializing Spring DispatcherServlet 'dispatcherServlet'
+2023-10-30 15:56:37.363 [RMI TCP Connection(2)-192.168.80.15] INFO  org.springframework.web.servlet.DispatcherServlet(525) - Initializing Servlet 'dispatcherServlet'
+2023-10-30 15:56:37.366 [RMI TCP Connection(2)-192.168.80.15] INFO  org.springframework.web.servlet.DispatcherServlet(547) - Completed initialization in 3 ms
+2023-10-30 15:56:37.404 [RMI TCP Connection(1)-192.168.80.15] INFO  com.zaxxer.hikari.HikariDataSource(110) - HikariPool-1 - Starting...
+2023-10-30 15:56:38.211 [RMI TCP Connection(1)-192.168.80.15] INFO  com.zaxxer.hikari.HikariDataSource(123) - HikariPool-1 - Start completed.

+ 98 - 0
logs/recommend-server/log_warn.log

@@ -0,0 +1,98 @@
+2023-10-30 15:35:20.244 [main] WARN  c.c.f.apollo.internals.AbstractConfigRepository(29) - Sync config failed, will retry. Repository class com.ctrip.framework.apollo.internals.RemoteConfigRepository, reason: Load Apollo Config failed - appId: recommend-sort, cluster: default, namespace: application, url: http://192.168.204.179:8080/configs/recommend-sort/default/application?ip=192.168.80.15 [Cause: [status code: 404] Could not find config for namespace - appId: recommend-sort, cluster: default, namespace: application, please check whether the configs are released in Apollo!]
+2023-10-30 15:35:20.712 [main] WARN  c.c.f.apollo.internals.LocalFileConfigRepository(167) - Sync config from upstream repository class com.ctrip.framework.apollo.internals.RemoteConfigRepository failed, reason: Load Apollo Config failed - appId: recommend-sort, cluster: default, namespace: application, url: http://192.168.204.179:8080/configs/recommend-sort/default/application?ip=192.168.80.15 [Cause: [status code: 404] Could not find config for namespace - appId: recommend-sort, cluster: default, namespace: application, please check whether the configs are released in Apollo!]
+2023-10-30 15:35:21.223 [main] WARN  c.c.f.apollo.internals.LocalFileConfigRepository(167) - Sync config from upstream repository class com.ctrip.framework.apollo.internals.RemoteConfigRepository failed, reason: Load Apollo Config failed - appId: recommend-sort, cluster: default, namespace: application, url: http://192.168.204.179:8080/configs/recommend-sort/default/application?ip=192.168.80.15 [Cause: [status code: 404] Could not find config for namespace - appId: recommend-sort, cluster: default, namespace: application, please check whether the configs are released in Apollo!]
+2023-10-30 15:35:21.227 [main] WARN  c.c.f.apollo.internals.AbstractConfigRepository(29) - Sync config failed, will retry. Repository class com.ctrip.framework.apollo.internals.LocalFileConfigRepository, reason: Load config from local config failed! [Cause: Cannot read from local cache file /Users/dingyunpeng/Desktop/code/pq/recommend-server/recommend-server-service/target/classes/config-cache/recommend-sort+default+application.properties]
+2023-10-30 15:35:21.740 [main] WARN  c.c.f.apollo.internals.LocalFileConfigRepository(167) - Sync config from upstream repository class com.ctrip.framework.apollo.internals.RemoteConfigRepository failed, reason: Load Apollo Config failed - appId: recommend-sort, cluster: default, namespace: application, url: http://192.168.204.179:8080/configs/recommend-sort/default/application?ip=192.168.80.15 [Cause: [status code: 404] Could not find config for namespace - appId: recommend-sort, cluster: default, namespace: application, please check whether the configs are released in Apollo!]
+2023-10-30 15:35:21.743 [main] WARN  com.ctrip.framework.apollo.internals.DefaultConfig(61) - Init Apollo Local Config failed - namespace: application, reason: Load config from local config failed! [Cause: Cannot read from local cache file /Users/dingyunpeng/Desktop/code/pq/recommend-server/recommend-server-service/target/classes/config-cache/recommend-sort+default+application.properties].
+2023-10-30 15:35:21.750 [main] WARN  com.ctrip.framework.apollo.internals.DefaultConfig(95) - Could not load config for namespace application from Apollo, please check whether the configs are released in Apollo! Return default value now!
+2023-10-30 15:35:26.802 [main] WARN  org.springframework.boot.StartupInfoLogger(117) - InetAddress.getLocalHost().getHostName() took 5004 milliseconds to respond. Please verify your network configuration (macOS machines may need to add entries to /etc/hosts).
+2023-10-30 15:37:11.251 [main] WARN  c.c.f.apollo.internals.AbstractConfigRepository(29) - Sync config failed, will retry. Repository class com.ctrip.framework.apollo.internals.RemoteConfigRepository, reason: Load Apollo Config failed - appId: recommend-sort, cluster: default, namespace: application, url: http://192.168.204.179:8080/configs/recommend-sort/default/application?ip=192.168.80.15 [Cause: [status code: 404] Could not find config for namespace - appId: recommend-sort, cluster: default, namespace: application, please check whether the configs are released in Apollo!]
+2023-10-30 15:37:11.663 [main] WARN  c.c.f.apollo.internals.LocalFileConfigRepository(167) - Sync config from upstream repository class com.ctrip.framework.apollo.internals.RemoteConfigRepository failed, reason: Load Apollo Config failed - appId: recommend-sort, cluster: default, namespace: application, url: http://192.168.204.179:8080/configs/recommend-sort/default/application?ip=192.168.80.15 [Cause: [status code: 404] Could not find config for namespace - appId: recommend-sort, cluster: default, namespace: application, please check whether the configs are released in Apollo!]
+2023-10-30 15:37:12.185 [main] WARN  c.c.f.apollo.internals.LocalFileConfigRepository(167) - Sync config from upstream repository class com.ctrip.framework.apollo.internals.RemoteConfigRepository failed, reason: Load Apollo Config failed - appId: recommend-sort, cluster: default, namespace: application, url: http://192.168.204.179:8080/configs/recommend-sort/default/application?ip=192.168.80.15 [Cause: [status code: 404] Could not find config for namespace - appId: recommend-sort, cluster: default, namespace: application, please check whether the configs are released in Apollo!]
+2023-10-30 15:37:12.190 [main] WARN  c.c.f.apollo.internals.AbstractConfigRepository(29) - Sync config failed, will retry. Repository class com.ctrip.framework.apollo.internals.LocalFileConfigRepository, reason: Load config from local config failed! [Cause: Cannot read from local cache file /Users/dingyunpeng/Desktop/code/pq/recommend-server/recommend-server-service/target/classes/config-cache/recommend-sort+default+application.properties]
+2023-10-30 15:37:12.698 [main] WARN  c.c.f.apollo.internals.LocalFileConfigRepository(167) - Sync config from upstream repository class com.ctrip.framework.apollo.internals.RemoteConfigRepository failed, reason: Load Apollo Config failed - appId: recommend-sort, cluster: default, namespace: application, url: http://192.168.204.179:8080/configs/recommend-sort/default/application?ip=192.168.80.15 [Cause: [status code: 404] Could not find config for namespace - appId: recommend-sort, cluster: default, namespace: application, please check whether the configs are released in Apollo!]
+2023-10-30 15:37:12.699 [main] WARN  com.ctrip.framework.apollo.internals.DefaultConfig(61) - Init Apollo Local Config failed - namespace: application, reason: Load config from local config failed! [Cause: Cannot read from local cache file /Users/dingyunpeng/Desktop/code/pq/recommend-server/recommend-server-service/target/classes/config-cache/recommend-sort+default+application.properties].
+2023-10-30 15:37:12.702 [main] WARN  com.ctrip.framework.apollo.internals.DefaultConfig(95) - Could not load config for namespace application from Apollo, please check whether the configs are released in Apollo! Return default value now!
+2023-10-30 15:37:17.747 [main] WARN  org.springframework.boot.StartupInfoLogger(117) - InetAddress.getLocalHost().getHostName() took 5005 milliseconds to respond. Please verify your network configuration (macOS machines may need to add entries to /etc/hosts).
+2023-10-30 15:37:23.656 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner(44) - No MyBatis mapper was found in '[com.tzld.piaoquan.recommend.server.dao]' package. Please check your configuration.
+2023-10-30 15:37:23.775 [main] WARN  o.s.boot.context.properties.PropertySourcesDeducer(66) - Multiple PropertySourcesPlaceholderConfigurer beans registered [propertySourcesPlaceholderConfigurer, org.springframework.context.support.PropertySourcesPlaceholderConfigurer], falling back to Environment
+2023-10-30 15:37:24.377 [main] WARN  o.s.c.a.AnnotationConfigApplicationContext(596) - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration$RefreshableEurekaClientConfiguration': Unsatisfied dependency expressed through field 'optionalArgs'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.netflix.discovery.AbstractDiscoveryClientOptionalArgs<?>' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
+2023-10-30 15:41:18.400 [main] WARN  c.c.f.apollo.internals.AbstractConfigRepository(29) - Sync config failed, will retry. Repository class com.ctrip.framework.apollo.internals.RemoteConfigRepository, reason: Load Apollo Config failed - appId: recommend-sort, cluster: default, namespace: application, url: http://192.168.204.179:8080/configs/recommend-sort/default/application?ip=192.168.80.15 [Cause: [status code: 404] Could not find config for namespace - appId: recommend-sort, cluster: default, namespace: application, please check whether the configs are released in Apollo!]
+2023-10-30 15:41:18.863 [main] WARN  c.c.f.apollo.internals.LocalFileConfigRepository(167) - Sync config from upstream repository class com.ctrip.framework.apollo.internals.RemoteConfigRepository failed, reason: Load Apollo Config failed - appId: recommend-sort, cluster: default, namespace: application, url: http://192.168.204.179:8080/configs/recommend-sort/default/application?ip=192.168.80.15 [Cause: [status code: 404] Could not find config for namespace - appId: recommend-sort, cluster: default, namespace: application, please check whether the configs are released in Apollo!]
+2023-10-30 15:41:19.367 [main] WARN  c.c.f.apollo.internals.LocalFileConfigRepository(167) - Sync config from upstream repository class com.ctrip.framework.apollo.internals.RemoteConfigRepository failed, reason: Load Apollo Config failed - appId: recommend-sort, cluster: default, namespace: application, url: http://192.168.204.179:8080/configs/recommend-sort/default/application?ip=192.168.80.15 [Cause: [status code: 404] Could not find config for namespace - appId: recommend-sort, cluster: default, namespace: application, please check whether the configs are released in Apollo!]
+2023-10-30 15:41:19.374 [main] WARN  c.c.f.apollo.internals.AbstractConfigRepository(29) - Sync config failed, will retry. Repository class com.ctrip.framework.apollo.internals.LocalFileConfigRepository, reason: Load config from local config failed! [Cause: Cannot read from local cache file /Users/dingyunpeng/Desktop/code/pq/recommend-server/recommend-server-service/target/classes/config-cache/recommend-sort+default+application.properties]
+2023-10-30 15:41:19.862 [main] WARN  c.c.f.apollo.internals.LocalFileConfigRepository(167) - Sync config from upstream repository class com.ctrip.framework.apollo.internals.RemoteConfigRepository failed, reason: Load Apollo Config failed - appId: recommend-sort, cluster: default, namespace: application, url: http://192.168.204.179:8080/configs/recommend-sort/default/application?ip=192.168.80.15 [Cause: [status code: 404] Could not find config for namespace - appId: recommend-sort, cluster: default, namespace: application, please check whether the configs are released in Apollo!]
+2023-10-30 15:41:19.869 [main] WARN  com.ctrip.framework.apollo.internals.DefaultConfig(61) - Init Apollo Local Config failed - namespace: application, reason: Load config from local config failed! [Cause: Cannot read from local cache file /Users/dingyunpeng/Desktop/code/pq/recommend-server/recommend-server-service/target/classes/config-cache/recommend-sort+default+application.properties].
+2023-10-30 15:41:19.876 [main] WARN  com.ctrip.framework.apollo.internals.DefaultConfig(95) - Could not load config for namespace application from Apollo, please check whether the configs are released in Apollo! Return default value now!
+2023-10-30 15:41:24.941 [main] WARN  org.springframework.boot.StartupInfoLogger(117) - InetAddress.getLocalHost().getHostName() took 5002 milliseconds to respond. Please verify your network configuration (macOS machines may need to add entries to /etc/hosts).
+2023-10-30 15:41:31.152 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner(44) - No MyBatis mapper was found in '[com.tzld.piaoquan.recommend.server.dao]' package. Please check your configuration.
+2023-10-30 15:41:31.263 [main] WARN  o.s.boot.context.properties.PropertySourcesDeducer(66) - Multiple PropertySourcesPlaceholderConfigurer beans registered [propertySourcesPlaceholderConfigurer, org.springframework.context.support.PropertySourcesPlaceholderConfigurer], falling back to Environment
+2023-10-30 15:41:33.457 [main] WARN  o.s.c.l.c.LoadBalancerCacheAutoConfiguration$LoadBalancerCaffeineWarnLogger(82) - Spring Cloud LoadBalancer is currently working with the default cache. You can switch to using Caffeine cache, by adding it and org.springframework.cache.caffeine.CaffeineCacheManager to the classpath.
+2023-10-30 15:41:33.581 [main] WARN  o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext(596) - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Failed to start bean 'eurekaAutoServiceRegistration'; nested exception is java.lang.NullPointerException
+2023-10-30 15:56:15.811 [main] WARN  c.c.f.apollo.internals.AbstractConfigRepository(29) - Sync config failed, will retry. Repository class com.ctrip.framework.apollo.internals.RemoteConfigRepository, reason: Load Apollo Config failed - appId: recommend-sort, cluster: default, namespace: application, url: http://192.168.204.179:8080/configs/recommend-sort/default/application?ip=192.168.80.15 [Cause: [status code: 404] Could not find config for namespace - appId: recommend-sort, cluster: default, namespace: application, please check whether the configs are released in Apollo!]
+2023-10-30 15:56:16.308 [main] WARN  c.c.f.apollo.internals.LocalFileConfigRepository(167) - Sync config from upstream repository class com.ctrip.framework.apollo.internals.RemoteConfigRepository failed, reason: Load Apollo Config failed - appId: recommend-sort, cluster: default, namespace: application, url: http://192.168.204.179:8080/configs/recommend-sort/default/application?ip=192.168.80.15 [Cause: [status code: 404] Could not find config for namespace - appId: recommend-sort, cluster: default, namespace: application, please check whether the configs are released in Apollo!]
+2023-10-30 15:56:16.782 [main] WARN  c.c.f.apollo.internals.LocalFileConfigRepository(167) - Sync config from upstream repository class com.ctrip.framework.apollo.internals.RemoteConfigRepository failed, reason: Load Apollo Config failed - appId: recommend-sort, cluster: default, namespace: application, url: http://192.168.204.179:8080/configs/recommend-sort/default/application?ip=192.168.80.15 [Cause: [status code: 404] Could not find config for namespace - appId: recommend-sort, cluster: default, namespace: application, please check whether the configs are released in Apollo!]
+2023-10-30 15:56:16.786 [main] WARN  c.c.f.apollo.internals.AbstractConfigRepository(29) - Sync config failed, will retry. Repository class com.ctrip.framework.apollo.internals.LocalFileConfigRepository, reason: Load config from local config failed! [Cause: Cannot read from local cache file /Users/dingyunpeng/Desktop/code/pq/recommend-server/recommend-server-service/target/classes/config-cache/recommend-sort+default+application.properties]
+2023-10-30 15:56:17.278 [main] WARN  c.c.f.apollo.internals.LocalFileConfigRepository(167) - Sync config from upstream repository class com.ctrip.framework.apollo.internals.RemoteConfigRepository failed, reason: Load Apollo Config failed - appId: recommend-sort, cluster: default, namespace: application, url: http://192.168.204.179:8080/configs/recommend-sort/default/application?ip=192.168.80.15 [Cause: [status code: 404] Could not find config for namespace - appId: recommend-sort, cluster: default, namespace: application, please check whether the configs are released in Apollo!]
+2023-10-30 15:56:17.286 [main] WARN  com.ctrip.framework.apollo.internals.DefaultConfig(61) - Init Apollo Local Config failed - namespace: application, reason: Load config from local config failed! [Cause: Cannot read from local cache file /Users/dingyunpeng/Desktop/code/pq/recommend-server/recommend-server-service/target/classes/config-cache/recommend-sort+default+application.properties].
+2023-10-30 15:56:17.292 [main] WARN  com.ctrip.framework.apollo.internals.DefaultConfig(95) - Could not load config for namespace application from Apollo, please check whether the configs are released in Apollo! Return default value now!
+2023-10-30 15:56:22.354 [main] WARN  org.springframework.boot.StartupInfoLogger(117) - InetAddress.getLocalHost().getHostName() took 5004 milliseconds to respond. Please verify your network configuration (macOS machines may need to add entries to /etc/hosts).
+2023-10-30 15:56:28.618 [main] WARN  org.mybatis.spring.mapper.ClassPathMapperScanner(44) - No MyBatis mapper was found in '[com.tzld.piaoquan.recommend.server.dao]' package. Please check your configuration.
+2023-10-30 15:56:28.727 [main] WARN  o.s.boot.context.properties.PropertySourcesDeducer(66) - Multiple PropertySourcesPlaceholderConfigurer beans registered [propertySourcesPlaceholderConfigurer, org.springframework.context.support.PropertySourcesPlaceholderConfigurer], falling back to Environment
+2023-10-30 15:56:30.898 [main] WARN  o.s.c.l.c.LoadBalancerCacheAutoConfiguration$LoadBalancerCaffeineWarnLogger(82) - Spring Cloud LoadBalancer is currently working with the default cache. You can switch to using Caffeine cache, by adding it and org.springframework.cache.caffeine.CaffeineCacheManager to the classpath.
+2023-10-30 15:56:43.494 [boundedElastic-1] WARN  o.s.b.actuate.redis.RedisReactiveHealthIndicator(89) - Redis health check failed
+org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis; nested exception is org.springframework.data.redis.connection.PoolException: Could not get a resource from the pool; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to localhost:6379
+	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.translateException(LettuceConnectionFactory.java:1553)
+	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1461)
+	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getNativeConnection(LettuceConnectionFactory.java:1247)
+	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getConnection(LettuceConnectionFactory.java:1230)
+	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getSharedReactiveConnection(LettuceConnectionFactory.java:989)
+	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getReactiveConnection(LettuceConnectionFactory.java:445)
+	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getReactiveConnection(LettuceConnectionFactory.java:98)
+	at reactor.core.publisher.MonoSupplier.call(MonoSupplier.java:85)
+	at reactor.core.publisher.FluxSubscribeOnCallable$CallableSubscribeOnSubscription.run(FluxSubscribeOnCallable.java:227)
+	at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68)
+	at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28)
+	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
+	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
+	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
+	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
+	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
+	at java.lang.Thread.run(Thread.java:750)
+Caused by: org.springframework.data.redis.connection.PoolException: Could not get a resource from the pool; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to localhost:6379
+	at org.springframework.data.redis.connection.lettuce.LettucePoolingConnectionProvider.getConnection(LettucePoolingConnectionProvider.java:109)
+	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1459)
+	... 15 common frames omitted
+Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to localhost:6379
+	at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:78)
+	at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:56)
+	at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:320)
+	at io.lettuce.core.RedisClient.connect(RedisClient.java:211)
+	at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.lambda$getConnection$1(StandaloneConnectionProvider.java:115)
+	at java.util.Optional.orElseGet(Optional.java:267)
+	at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.getConnection(StandaloneConnectionProvider.java:115)
+	at org.springframework.data.redis.connection.lettuce.LettucePoolingConnectionProvider.lambda$null$0(LettucePoolingConnectionProvider.java:97)
+	at io.lettuce.core.support.ConnectionPoolSupport$RedisPooledObjectFactory.create(ConnectionPoolSupport.java:211)
+	at io.lettuce.core.support.ConnectionPoolSupport$RedisPooledObjectFactory.create(ConnectionPoolSupport.java:201)
+	at org.apache.commons.pool2.BasePooledObjectFactory.makeObject(BasePooledObjectFactory.java:58)
+	at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:918)
+	at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:431)
+	at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:356)
+	at io.lettuce.core.support.ConnectionPoolSupport$1.borrowObject(ConnectionPoolSupport.java:122)
+	at io.lettuce.core.support.ConnectionPoolSupport$1.borrowObject(ConnectionPoolSupport.java:117)
+	at org.springframework.data.redis.connection.lettuce.LettucePoolingConnectionProvider.getConnection(LettucePoolingConnectionProvider.java:103)
+	... 16 common frames omitted
+Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: localhost/127.0.0.1:6379
+Caused by: java.net.ConnectException: Connection refused
+	at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
+	at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:715)
+	at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:330)
+	at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:334)
+	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:707)
+	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655)
+	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581)
+	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)
+	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
+	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
+	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
+	at java.lang.Thread.run(Thread.java:750)

+ 1 - 76
pom.xml

@@ -17,85 +17,10 @@
     <modules>
         <module>recommend-server-service</module>
         <module>recommend-server-client</module>
-        <module>recommend-server-runner</module>
     </modules>
 
     <dependencies>
-        <dependency>
-            <groupId>org.springframework.cloud</groupId>
-            <artifactId>spring-cloud-commons</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.cloud</groupId>
-            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-pool2</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-test</artifactId>
-            <scope>test</scope>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.junit.vintage</groupId>
-                    <artifactId>junit-vintage-engine</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>mysql</groupId>
-            <artifactId>mysql-connector-java</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.mybatis.spring.boot</groupId>
-            <artifactId>mybatis-spring-boot-starter</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.mybatis.generator</groupId>
-            <artifactId>mybatis-generator-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.github.pagehelper</groupId>
-            <artifactId>pagehelper-spring-boot-starter</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-data-redis</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.alibaba</groupId>
-            <artifactId>fastjson</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.ctrip.framework.apollo</groupId>
-            <artifactId>apollo-client</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.alibaba.csp</groupId>
-            <artifactId>sentinel-datasource-apollo</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.alibaba.cloud</groupId>
-            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.google.protobuf</groupId>
-            <artifactId>protobuf-java</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.aliyun.openservices</groupId>
-            <artifactId>aliyun-log-logback-appender</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.httpcomponents</groupId>
-            <artifactId>httpclient</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-lang3</artifactId>
-        </dependency>
+
     </dependencies>
 
 </project>

+ 38 - 48
recommend-server-client/pom.xml

@@ -10,53 +10,18 @@
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>recommend-server-client</artifactId>
+    <version>1.0.0</version>
 
-    <properties>
-        <maven.compiler.source>8</maven.compiler.source>
-        <maven.compiler.target>8</maven.compiler.target>
-        <grpc.version>1.9.2</grpc.version>
-        <grpc.netty.version>1.9.2</grpc.netty.version>
-        <jackson.version>5.3.9</jackson.version>
-
-    </properties>
     <dependencies>
         <dependency>
-            <groupId>io.grpc</groupId>
-            <artifactId>grpc-netty</artifactId>
-            <version>${grpc.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>io.grpc</groupId>
-            <artifactId>grpc-protobuf</artifactId>
-            <version>${grpc.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>io.grpc</groupId>
-            <artifactId>grpc-stub</artifactId>
-            <version>${grpc.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>io.netty</groupId>
-            <artifactId>netty-common</artifactId>
-            <version>4.1.50.Final</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-annotations</artifactId>
-            <version>${jackson.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-core</artifactId>
-            <version>${jackson.version}</version>
+            <groupId>net.devh</groupId>
+            <artifactId>grpc-client-spring-boot-starter</artifactId>
+            <version>2.9.0.RELEASE</version>
         </dependency>
-
         <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-databind</artifactId>
-            <version>${jackson.version}</version>
+            <groupId>com.google.protobuf</groupId>
+            <artifactId>protobuf-java</artifactId>
+            <version>3.9.0</version>
         </dependency>
     </dependencies>
     <build>
@@ -64,20 +29,22 @@
             <extension>
                 <groupId>kr.motd.maven</groupId>
                 <artifactId>os-maven-plugin</artifactId>
-                <version>${os.plugin.version}</version>
+                <version>1.6.0</version>
             </extension>
         </extensions>
         <plugins>
             <plugin>
                 <groupId>org.xolstice.maven.plugins</groupId>
                 <artifactId>protobuf-maven-plugin</artifactId>
-                <version>${protobuf.plugin.version}</version>
+                <version>0.6.1</version>
                 <configuration>
-                    <protocArtifact>com.google.protobuf:protoc:${protoc.version}:exe:${os.detected.classifier}
-                    </protocArtifact>
+                    <protocArtifact>com.google.protobuf:protoc:3.12.0:exe:${os.detected.classifier}</protocArtifact>
                     <pluginId>grpc-java</pluginId>
-                    <pluginArtifact>io.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier}
-                    </pluginArtifact>
+                    <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.34.1:exe:${os.detected.classifier}</pluginArtifact>
+                    <!--设置grpc生成代码到指定路径-->
+                    <outputDirectory>${project.basedir}/src/main/java</outputDirectory>
+                    <!--生成代码前是否清空目录-->
+                    <clearOutputDirectory>false</clearOutputDirectory>
                 </configuration>
                 <executions>
                     <execution>
@@ -88,6 +55,29 @@
                     </execution>
                 </executions>
             </plugin>
+
+            <!-- 设置多个源文件夹 -->
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <version>3.0.0</version>
+                <executions>
+                    <!-- 添加主源码目录 -->
+                    <execution>
+                        <id>add-source</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>add-source</goal>
+                        </goals>
+                        <configuration>
+                            <sources>
+                                <source>${project.basedir}/src/main/java</source>
+                            </sources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
         </plugins>
     </build>
 </project>

+ 11 - 0
recommend-server-client/src/main/java/com/tzld/piaoquan/recommend/server/client/HelloClient.java

@@ -0,0 +1,11 @@
+package com.tzld.piaoquan.recommend.server.client;
+
+import org.springframework.stereotype.Component;
+
+/**
+ * @author dyp
+ */
+@Component
+public class HelloClient {
+
+}

+ 62 - 0
recommend-server-client/src/main/java/com/tzld/piaoquan/recommend/server/gen/demo/Hello.java

@@ -0,0 +1,62 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: com/tzld/piaoquan/recommend/server/hello.proto
+
+package com.tzld.piaoquan.recommend.server.gen.demo;
+
+public final class Hello {
+  private Hello() {}
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistryLite registry) {
+  }
+
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistry registry) {
+    registerAllExtensions(
+        (com.google.protobuf.ExtensionRegistryLite) registry);
+  }
+  static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_HelloRequest_descriptor;
+  static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_HelloRequest_fieldAccessorTable;
+  static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_HelloResponse_descriptor;
+  static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_HelloResponse_fieldAccessorTable;
+
+  public static com.google.protobuf.Descriptors.FileDescriptor
+      getDescriptor() {
+    return descriptor;
+  }
+  private static  com.google.protobuf.Descriptors.FileDescriptor
+      descriptor;
+  static {
+    java.lang.String[] descriptorData = {
+      "\n.com/tzld/piaoquan/recommend/server/hel" +
+      "lo.proto\" \n\014HelloRequest\022\020\n\010greeting\030\001 \001" +
+      "(\t\"\036\n\rHelloResponse\022\r\n\005reply\030\001 \001(\t29\n\014He" +
+      "lloService\022)\n\010SayHello\022\r.HelloRequest\032\016." +
+      "HelloResponseB2\n+com.tzld.piaoquan.recom" +
+      "mend.server.gen.demoP\001\210\001\001b\006proto3"
+    };
+    descriptor = com.google.protobuf.Descriptors.FileDescriptor
+      .internalBuildGeneratedFileFrom(descriptorData,
+        new com.google.protobuf.Descriptors.FileDescriptor[] {
+        });
+    internal_static_HelloRequest_descriptor =
+      getDescriptor().getMessageTypes().get(0);
+    internal_static_HelloRequest_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_HelloRequest_descriptor,
+        new java.lang.String[] { "Greeting", });
+    internal_static_HelloResponse_descriptor =
+      getDescriptor().getMessageTypes().get(1);
+    internal_static_HelloResponse_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_HelloResponse_descriptor,
+        new java.lang.String[] { "Reply", });
+  }
+
+  // @@protoc_insertion_point(outer_class_scope)
+}

+ 557 - 0
recommend-server-client/src/main/java/com/tzld/piaoquan/recommend/server/gen/demo/HelloRequest.java

@@ -0,0 +1,557 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: com/tzld/piaoquan/recommend/server/hello.proto
+
+package com.tzld.piaoquan.recommend.server.gen.demo;
+
+/**
+ * Protobuf type {@code HelloRequest}
+ */
+public final class HelloRequest extends
+    com.google.protobuf.GeneratedMessageV3 implements
+    // @@protoc_insertion_point(message_implements:HelloRequest)
+    HelloRequestOrBuilder {
+private static final long serialVersionUID = 0L;
+  // Use HelloRequest.newBuilder() to construct.
+  private HelloRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    super(builder);
+  }
+  private HelloRequest() {
+    greeting_ = "";
+  }
+
+  @java.lang.Override
+  @SuppressWarnings({"unused"})
+  protected java.lang.Object newInstance(
+      UnusedPrivateParameter unused) {
+    return new HelloRequest();
+  }
+
+  @java.lang.Override
+  public final com.google.protobuf.UnknownFieldSet
+  getUnknownFields() {
+    return this.unknownFields;
+  }
+  private HelloRequest(
+      com.google.protobuf.CodedInputStream input,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    this();
+    if (extensionRegistry == null) {
+      throw new java.lang.NullPointerException();
+    }
+    com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+        com.google.protobuf.UnknownFieldSet.newBuilder();
+    try {
+      boolean done = false;
+      while (!done) {
+        int tag = input.readTag();
+        switch (tag) {
+          case 0:
+            done = true;
+            break;
+          case 10: {
+            java.lang.String s = input.readStringRequireUtf8();
+
+            greeting_ = s;
+            break;
+          }
+          default: {
+            if (!parseUnknownField(
+                input, unknownFields, extensionRegistry, tag)) {
+              done = true;
+            }
+            break;
+          }
+        }
+      }
+    } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+      throw e.setUnfinishedMessage(this);
+    } catch (java.io.IOException e) {
+      throw new com.google.protobuf.InvalidProtocolBufferException(
+          e).setUnfinishedMessage(this);
+    } finally {
+      this.unknownFields = unknownFields.build();
+      makeExtensionsImmutable();
+    }
+  }
+  public static final com.google.protobuf.Descriptors.Descriptor
+      getDescriptor() {
+    return com.tzld.piaoquan.recommend.server.gen.demo.Hello.internal_static_HelloRequest_descriptor;
+  }
+
+  @java.lang.Override
+  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internalGetFieldAccessorTable() {
+    return com.tzld.piaoquan.recommend.server.gen.demo.Hello.internal_static_HelloRequest_fieldAccessorTable
+        .ensureFieldAccessorsInitialized(
+            com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest.class, com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest.Builder.class);
+  }
+
+  public static final int GREETING_FIELD_NUMBER = 1;
+  private volatile java.lang.Object greeting_;
+  /**
+   * <code>string greeting = 1;</code>
+   * @return The greeting.
+   */
+  @java.lang.Override
+  public java.lang.String getGreeting() {
+    java.lang.Object ref = greeting_;
+    if (ref instanceof java.lang.String) {
+      return (java.lang.String) ref;
+    } else {
+      com.google.protobuf.ByteString bs = 
+          (com.google.protobuf.ByteString) ref;
+      java.lang.String s = bs.toStringUtf8();
+      greeting_ = s;
+      return s;
+    }
+  }
+  /**
+   * <code>string greeting = 1;</code>
+   * @return The bytes for greeting.
+   */
+  @java.lang.Override
+  public com.google.protobuf.ByteString
+      getGreetingBytes() {
+    java.lang.Object ref = greeting_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      greeting_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
+  }
+
+  private byte memoizedIsInitialized = -1;
+  @java.lang.Override
+  public final boolean isInitialized() {
+    byte isInitialized = memoizedIsInitialized;
+    if (isInitialized == 1) return true;
+    if (isInitialized == 0) return false;
+
+    memoizedIsInitialized = 1;
+    return true;
+  }
+
+  @java.lang.Override
+  public void writeTo(com.google.protobuf.CodedOutputStream output)
+                      throws java.io.IOException {
+    if (!getGreetingBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, greeting_);
+    }
+    unknownFields.writeTo(output);
+  }
+
+  @java.lang.Override
+  public int getSerializedSize() {
+    int size = memoizedSize;
+    if (size != -1) return size;
+
+    size = 0;
+    if (!getGreetingBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, greeting_);
+    }
+    size += unknownFields.getSerializedSize();
+    memoizedSize = size;
+    return size;
+  }
+
+  @java.lang.Override
+  public boolean equals(final java.lang.Object obj) {
+    if (obj == this) {
+     return true;
+    }
+    if (!(obj instanceof com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest)) {
+      return super.equals(obj);
+    }
+    com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest other = (com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest) obj;
+
+    if (!getGreeting()
+        .equals(other.getGreeting())) return false;
+    if (!unknownFields.equals(other.unknownFields)) return false;
+    return true;
+  }
+
+  @java.lang.Override
+  public int hashCode() {
+    if (memoizedHashCode != 0) {
+      return memoizedHashCode;
+    }
+    int hash = 41;
+    hash = (19 * hash) + getDescriptor().hashCode();
+    hash = (37 * hash) + GREETING_FIELD_NUMBER;
+    hash = (53 * hash) + getGreeting().hashCode();
+    hash = (29 * hash) + unknownFields.hashCode();
+    memoizedHashCode = hash;
+    return hash;
+  }
+
+  public static com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest parseFrom(
+      java.nio.ByteBuffer data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
+  }
+  public static com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest parseFrom(
+      java.nio.ByteBuffer data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
+  }
+  public static com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest parseFrom(
+      com.google.protobuf.ByteString data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
+  }
+  public static com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest parseFrom(
+      com.google.protobuf.ByteString data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
+  }
+  public static com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest parseFrom(byte[] data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
+  }
+  public static com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest parseFrom(
+      byte[] data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
+  }
+  public static com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest parseFrom(java.io.InputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input);
+  }
+  public static com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest parseFrom(
+      java.io.InputStream input,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input, extensionRegistry);
+  }
+  public static com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest parseDelimitedFrom(java.io.InputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseDelimitedWithIOException(PARSER, input);
+  }
+  public static com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest parseDelimitedFrom(
+      java.io.InputStream input,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+  }
+  public static com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest parseFrom(
+      com.google.protobuf.CodedInputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input);
+  }
+  public static com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest parseFrom(
+      com.google.protobuf.CodedInputStream input,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input, extensionRegistry);
+  }
+
+  @java.lang.Override
+  public Builder newBuilderForType() { return newBuilder(); }
+  public static Builder newBuilder() {
+    return DEFAULT_INSTANCE.toBuilder();
+  }
+  public static Builder newBuilder(com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest prototype) {
+    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+  }
+  @java.lang.Override
+  public Builder toBuilder() {
+    return this == DEFAULT_INSTANCE
+        ? new Builder() : new Builder().mergeFrom(this);
+  }
+
+  @java.lang.Override
+  protected Builder newBuilderForType(
+      com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+    Builder builder = new Builder(parent);
+    return builder;
+  }
+  /**
+   * Protobuf type {@code HelloRequest}
+   */
+  public static final class Builder extends
+      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+      // @@protoc_insertion_point(builder_implements:HelloRequest)
+      com.tzld.piaoquan.recommend.server.gen.demo.HelloRequestOrBuilder {
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return com.tzld.piaoquan.recommend.server.gen.demo.Hello.internal_static_HelloRequest_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return com.tzld.piaoquan.recommend.server.gen.demo.Hello.internal_static_HelloRequest_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest.class, com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest.Builder.class);
+    }
+
+    // Construct using com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest.newBuilder()
+    private Builder() {
+      maybeForceBuilderInitialization();
+    }
+
+    private Builder(
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+      super(parent);
+      maybeForceBuilderInitialization();
+    }
+    private void maybeForceBuilderInitialization() {
+      if (com.google.protobuf.GeneratedMessageV3
+              .alwaysUseFieldBuilders) {
+      }
+    }
+    @java.lang.Override
+    public Builder clear() {
+      super.clear();
+      greeting_ = "";
+
+      return this;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.Descriptor
+        getDescriptorForType() {
+      return com.tzld.piaoquan.recommend.server.gen.demo.Hello.internal_static_HelloRequest_descriptor;
+    }
+
+    @java.lang.Override
+    public com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest getDefaultInstanceForType() {
+      return com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest.getDefaultInstance();
+    }
+
+    @java.lang.Override
+    public com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest build() {
+      com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest result = buildPartial();
+      if (!result.isInitialized()) {
+        throw newUninitializedMessageException(result);
+      }
+      return result;
+    }
+
+    @java.lang.Override
+    public com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest buildPartial() {
+      com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest result = new com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest(this);
+      result.greeting_ = greeting_;
+      onBuilt();
+      return result;
+    }
+
+    @java.lang.Override
+    public Builder clone() {
+      return super.clone();
+    }
+    @java.lang.Override
+    public Builder setField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        java.lang.Object value) {
+      return super.setField(field, value);
+    }
+    @java.lang.Override
+    public Builder clearField(
+        com.google.protobuf.Descriptors.FieldDescriptor field) {
+      return super.clearField(field);
+    }
+    @java.lang.Override
+    public Builder clearOneof(
+        com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+      return super.clearOneof(oneof);
+    }
+    @java.lang.Override
+    public Builder setRepeatedField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        int index, java.lang.Object value) {
+      return super.setRepeatedField(field, index, value);
+    }
+    @java.lang.Override
+    public Builder addRepeatedField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        java.lang.Object value) {
+      return super.addRepeatedField(field, value);
+    }
+    @java.lang.Override
+    public Builder mergeFrom(com.google.protobuf.Message other) {
+      if (other instanceof com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest) {
+        return mergeFrom((com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest)other);
+      } else {
+        super.mergeFrom(other);
+        return this;
+      }
+    }
+
+    public Builder mergeFrom(com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest other) {
+      if (other == com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest.getDefaultInstance()) return this;
+      if (!other.getGreeting().isEmpty()) {
+        greeting_ = other.greeting_;
+        onChanged();
+      }
+      this.mergeUnknownFields(other.unknownFields);
+      onChanged();
+      return this;
+    }
+
+    @java.lang.Override
+    public final boolean isInitialized() {
+      return true;
+    }
+
+    @java.lang.Override
+    public Builder mergeFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest parsedMessage = null;
+      try {
+        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        parsedMessage = (com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest) e.getUnfinishedMessage();
+        throw e.unwrapIOException();
+      } finally {
+        if (parsedMessage != null) {
+          mergeFrom(parsedMessage);
+        }
+      }
+      return this;
+    }
+
+    private java.lang.Object greeting_ = "";
+    /**
+     * <code>string greeting = 1;</code>
+     * @return The greeting.
+     */
+    public java.lang.String getGreeting() {
+      java.lang.Object ref = greeting_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        greeting_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
+    }
+    /**
+     * <code>string greeting = 1;</code>
+     * @return The bytes for greeting.
+     */
+    public com.google.protobuf.ByteString
+        getGreetingBytes() {
+      java.lang.Object ref = greeting_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        greeting_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+    /**
+     * <code>string greeting = 1;</code>
+     * @param value The greeting to set.
+     * @return This builder for chaining.
+     */
+    public Builder setGreeting(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      greeting_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>string greeting = 1;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearGreeting() {
+      
+      greeting_ = getDefaultInstance().getGreeting();
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>string greeting = 1;</code>
+     * @param value The bytes for greeting to set.
+     * @return This builder for chaining.
+     */
+    public Builder setGreetingBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+      
+      greeting_ = value;
+      onChanged();
+      return this;
+    }
+    @java.lang.Override
+    public final Builder setUnknownFields(
+        final com.google.protobuf.UnknownFieldSet unknownFields) {
+      return super.setUnknownFields(unknownFields);
+    }
+
+    @java.lang.Override
+    public final Builder mergeUnknownFields(
+        final com.google.protobuf.UnknownFieldSet unknownFields) {
+      return super.mergeUnknownFields(unknownFields);
+    }
+
+
+    // @@protoc_insertion_point(builder_scope:HelloRequest)
+  }
+
+  // @@protoc_insertion_point(class_scope:HelloRequest)
+  private static final com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest DEFAULT_INSTANCE;
+  static {
+    DEFAULT_INSTANCE = new com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest();
+  }
+
+  public static com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest getDefaultInstance() {
+    return DEFAULT_INSTANCE;
+  }
+
+  private static final com.google.protobuf.Parser<HelloRequest>
+      PARSER = new com.google.protobuf.AbstractParser<HelloRequest>() {
+    @java.lang.Override
+    public HelloRequest parsePartialFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return new HelloRequest(input, extensionRegistry);
+    }
+  };
+
+  public static com.google.protobuf.Parser<HelloRequest> parser() {
+    return PARSER;
+  }
+
+  @java.lang.Override
+  public com.google.protobuf.Parser<HelloRequest> getParserForType() {
+    return PARSER;
+  }
+
+  @java.lang.Override
+  public com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest getDefaultInstanceForType() {
+    return DEFAULT_INSTANCE;
+  }
+
+}
+

+ 21 - 0
recommend-server-client/src/main/java/com/tzld/piaoquan/recommend/server/gen/demo/HelloRequestOrBuilder.java

@@ -0,0 +1,21 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: com/tzld/piaoquan/recommend/server/hello.proto
+
+package com.tzld.piaoquan.recommend.server.gen.demo;
+
+public interface HelloRequestOrBuilder extends
+    // @@protoc_insertion_point(interface_extends:HelloRequest)
+    com.google.protobuf.MessageOrBuilder {
+
+  /**
+   * <code>string greeting = 1;</code>
+   * @return The greeting.
+   */
+  java.lang.String getGreeting();
+  /**
+   * <code>string greeting = 1;</code>
+   * @return The bytes for greeting.
+   */
+  com.google.protobuf.ByteString
+      getGreetingBytes();
+}

+ 557 - 0
recommend-server-client/src/main/java/com/tzld/piaoquan/recommend/server/gen/demo/HelloResponse.java

@@ -0,0 +1,557 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: com/tzld/piaoquan/recommend/server/hello.proto
+
+package com.tzld.piaoquan.recommend.server.gen.demo;
+
+/**
+ * Protobuf type {@code HelloResponse}
+ */
+public final class HelloResponse extends
+    com.google.protobuf.GeneratedMessageV3 implements
+    // @@protoc_insertion_point(message_implements:HelloResponse)
+    HelloResponseOrBuilder {
+private static final long serialVersionUID = 0L;
+  // Use HelloResponse.newBuilder() to construct.
+  private HelloResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+    super(builder);
+  }
+  private HelloResponse() {
+    reply_ = "";
+  }
+
+  @java.lang.Override
+  @SuppressWarnings({"unused"})
+  protected java.lang.Object newInstance(
+      UnusedPrivateParameter unused) {
+    return new HelloResponse();
+  }
+
+  @java.lang.Override
+  public final com.google.protobuf.UnknownFieldSet
+  getUnknownFields() {
+    return this.unknownFields;
+  }
+  private HelloResponse(
+      com.google.protobuf.CodedInputStream input,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    this();
+    if (extensionRegistry == null) {
+      throw new java.lang.NullPointerException();
+    }
+    com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+        com.google.protobuf.UnknownFieldSet.newBuilder();
+    try {
+      boolean done = false;
+      while (!done) {
+        int tag = input.readTag();
+        switch (tag) {
+          case 0:
+            done = true;
+            break;
+          case 10: {
+            java.lang.String s = input.readStringRequireUtf8();
+
+            reply_ = s;
+            break;
+          }
+          default: {
+            if (!parseUnknownField(
+                input, unknownFields, extensionRegistry, tag)) {
+              done = true;
+            }
+            break;
+          }
+        }
+      }
+    } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+      throw e.setUnfinishedMessage(this);
+    } catch (java.io.IOException e) {
+      throw new com.google.protobuf.InvalidProtocolBufferException(
+          e).setUnfinishedMessage(this);
+    } finally {
+      this.unknownFields = unknownFields.build();
+      makeExtensionsImmutable();
+    }
+  }
+  public static final com.google.protobuf.Descriptors.Descriptor
+      getDescriptor() {
+    return com.tzld.piaoquan.recommend.server.gen.demo.Hello.internal_static_HelloResponse_descriptor;
+  }
+
+  @java.lang.Override
+  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internalGetFieldAccessorTable() {
+    return com.tzld.piaoquan.recommend.server.gen.demo.Hello.internal_static_HelloResponse_fieldAccessorTable
+        .ensureFieldAccessorsInitialized(
+            com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse.class, com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse.Builder.class);
+  }
+
+  public static final int REPLY_FIELD_NUMBER = 1;
+  private volatile java.lang.Object reply_;
+  /**
+   * <code>string reply = 1;</code>
+   * @return The reply.
+   */
+  @java.lang.Override
+  public java.lang.String getReply() {
+    java.lang.Object ref = reply_;
+    if (ref instanceof java.lang.String) {
+      return (java.lang.String) ref;
+    } else {
+      com.google.protobuf.ByteString bs = 
+          (com.google.protobuf.ByteString) ref;
+      java.lang.String s = bs.toStringUtf8();
+      reply_ = s;
+      return s;
+    }
+  }
+  /**
+   * <code>string reply = 1;</code>
+   * @return The bytes for reply.
+   */
+  @java.lang.Override
+  public com.google.protobuf.ByteString
+      getReplyBytes() {
+    java.lang.Object ref = reply_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      reply_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
+  }
+
+  private byte memoizedIsInitialized = -1;
+  @java.lang.Override
+  public final boolean isInitialized() {
+    byte isInitialized = memoizedIsInitialized;
+    if (isInitialized == 1) return true;
+    if (isInitialized == 0) return false;
+
+    memoizedIsInitialized = 1;
+    return true;
+  }
+
+  @java.lang.Override
+  public void writeTo(com.google.protobuf.CodedOutputStream output)
+                      throws java.io.IOException {
+    if (!getReplyBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, reply_);
+    }
+    unknownFields.writeTo(output);
+  }
+
+  @java.lang.Override
+  public int getSerializedSize() {
+    int size = memoizedSize;
+    if (size != -1) return size;
+
+    size = 0;
+    if (!getReplyBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, reply_);
+    }
+    size += unknownFields.getSerializedSize();
+    memoizedSize = size;
+    return size;
+  }
+
+  @java.lang.Override
+  public boolean equals(final java.lang.Object obj) {
+    if (obj == this) {
+     return true;
+    }
+    if (!(obj instanceof com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse)) {
+      return super.equals(obj);
+    }
+    com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse other = (com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse) obj;
+
+    if (!getReply()
+        .equals(other.getReply())) return false;
+    if (!unknownFields.equals(other.unknownFields)) return false;
+    return true;
+  }
+
+  @java.lang.Override
+  public int hashCode() {
+    if (memoizedHashCode != 0) {
+      return memoizedHashCode;
+    }
+    int hash = 41;
+    hash = (19 * hash) + getDescriptor().hashCode();
+    hash = (37 * hash) + REPLY_FIELD_NUMBER;
+    hash = (53 * hash) + getReply().hashCode();
+    hash = (29 * hash) + unknownFields.hashCode();
+    memoizedHashCode = hash;
+    return hash;
+  }
+
+  public static com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse parseFrom(
+      java.nio.ByteBuffer data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
+  }
+  public static com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse parseFrom(
+      java.nio.ByteBuffer data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
+  }
+  public static com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse parseFrom(
+      com.google.protobuf.ByteString data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
+  }
+  public static com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse parseFrom(
+      com.google.protobuf.ByteString data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
+  }
+  public static com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse parseFrom(byte[] data)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data);
+  }
+  public static com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse parseFrom(
+      byte[] data,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws com.google.protobuf.InvalidProtocolBufferException {
+    return PARSER.parseFrom(data, extensionRegistry);
+  }
+  public static com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse parseFrom(java.io.InputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input);
+  }
+  public static com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse parseFrom(
+      java.io.InputStream input,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input, extensionRegistry);
+  }
+  public static com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse parseDelimitedFrom(java.io.InputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseDelimitedWithIOException(PARSER, input);
+  }
+  public static com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse parseDelimitedFrom(
+      java.io.InputStream input,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+  }
+  public static com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse parseFrom(
+      com.google.protobuf.CodedInputStream input)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input);
+  }
+  public static com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse parseFrom(
+      com.google.protobuf.CodedInputStream input,
+      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+      throws java.io.IOException {
+    return com.google.protobuf.GeneratedMessageV3
+        .parseWithIOException(PARSER, input, extensionRegistry);
+  }
+
+  @java.lang.Override
+  public Builder newBuilderForType() { return newBuilder(); }
+  public static Builder newBuilder() {
+    return DEFAULT_INSTANCE.toBuilder();
+  }
+  public static Builder newBuilder(com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse prototype) {
+    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+  }
+  @java.lang.Override
+  public Builder toBuilder() {
+    return this == DEFAULT_INSTANCE
+        ? new Builder() : new Builder().mergeFrom(this);
+  }
+
+  @java.lang.Override
+  protected Builder newBuilderForType(
+      com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+    Builder builder = new Builder(parent);
+    return builder;
+  }
+  /**
+   * Protobuf type {@code HelloResponse}
+   */
+  public static final class Builder extends
+      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+      // @@protoc_insertion_point(builder_implements:HelloResponse)
+      com.tzld.piaoquan.recommend.server.gen.demo.HelloResponseOrBuilder {
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return com.tzld.piaoquan.recommend.server.gen.demo.Hello.internal_static_HelloResponse_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return com.tzld.piaoquan.recommend.server.gen.demo.Hello.internal_static_HelloResponse_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse.class, com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse.Builder.class);
+    }
+
+    // Construct using com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse.newBuilder()
+    private Builder() {
+      maybeForceBuilderInitialization();
+    }
+
+    private Builder(
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+      super(parent);
+      maybeForceBuilderInitialization();
+    }
+    private void maybeForceBuilderInitialization() {
+      if (com.google.protobuf.GeneratedMessageV3
+              .alwaysUseFieldBuilders) {
+      }
+    }
+    @java.lang.Override
+    public Builder clear() {
+      super.clear();
+      reply_ = "";
+
+      return this;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.Descriptor
+        getDescriptorForType() {
+      return com.tzld.piaoquan.recommend.server.gen.demo.Hello.internal_static_HelloResponse_descriptor;
+    }
+
+    @java.lang.Override
+    public com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse getDefaultInstanceForType() {
+      return com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse.getDefaultInstance();
+    }
+
+    @java.lang.Override
+    public com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse build() {
+      com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse result = buildPartial();
+      if (!result.isInitialized()) {
+        throw newUninitializedMessageException(result);
+      }
+      return result;
+    }
+
+    @java.lang.Override
+    public com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse buildPartial() {
+      com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse result = new com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse(this);
+      result.reply_ = reply_;
+      onBuilt();
+      return result;
+    }
+
+    @java.lang.Override
+    public Builder clone() {
+      return super.clone();
+    }
+    @java.lang.Override
+    public Builder setField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        java.lang.Object value) {
+      return super.setField(field, value);
+    }
+    @java.lang.Override
+    public Builder clearField(
+        com.google.protobuf.Descriptors.FieldDescriptor field) {
+      return super.clearField(field);
+    }
+    @java.lang.Override
+    public Builder clearOneof(
+        com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+      return super.clearOneof(oneof);
+    }
+    @java.lang.Override
+    public Builder setRepeatedField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        int index, java.lang.Object value) {
+      return super.setRepeatedField(field, index, value);
+    }
+    @java.lang.Override
+    public Builder addRepeatedField(
+        com.google.protobuf.Descriptors.FieldDescriptor field,
+        java.lang.Object value) {
+      return super.addRepeatedField(field, value);
+    }
+    @java.lang.Override
+    public Builder mergeFrom(com.google.protobuf.Message other) {
+      if (other instanceof com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse) {
+        return mergeFrom((com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse)other);
+      } else {
+        super.mergeFrom(other);
+        return this;
+      }
+    }
+
+    public Builder mergeFrom(com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse other) {
+      if (other == com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse.getDefaultInstance()) return this;
+      if (!other.getReply().isEmpty()) {
+        reply_ = other.reply_;
+        onChanged();
+      }
+      this.mergeUnknownFields(other.unknownFields);
+      onChanged();
+      return this;
+    }
+
+    @java.lang.Override
+    public final boolean isInitialized() {
+      return true;
+    }
+
+    @java.lang.Override
+    public Builder mergeFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse parsedMessage = null;
+      try {
+        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        parsedMessage = (com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse) e.getUnfinishedMessage();
+        throw e.unwrapIOException();
+      } finally {
+        if (parsedMessage != null) {
+          mergeFrom(parsedMessage);
+        }
+      }
+      return this;
+    }
+
+    private java.lang.Object reply_ = "";
+    /**
+     * <code>string reply = 1;</code>
+     * @return The reply.
+     */
+    public java.lang.String getReply() {
+      java.lang.Object ref = reply_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        reply_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
+    }
+    /**
+     * <code>string reply = 1;</code>
+     * @return The bytes for reply.
+     */
+    public com.google.protobuf.ByteString
+        getReplyBytes() {
+      java.lang.Object ref = reply_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        reply_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+    /**
+     * <code>string reply = 1;</code>
+     * @param value The reply to set.
+     * @return This builder for chaining.
+     */
+    public Builder setReply(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      reply_ = value;
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>string reply = 1;</code>
+     * @return This builder for chaining.
+     */
+    public Builder clearReply() {
+      
+      reply_ = getDefaultInstance().getReply();
+      onChanged();
+      return this;
+    }
+    /**
+     * <code>string reply = 1;</code>
+     * @param value The bytes for reply to set.
+     * @return This builder for chaining.
+     */
+    public Builder setReplyBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+      
+      reply_ = value;
+      onChanged();
+      return this;
+    }
+    @java.lang.Override
+    public final Builder setUnknownFields(
+        final com.google.protobuf.UnknownFieldSet unknownFields) {
+      return super.setUnknownFields(unknownFields);
+    }
+
+    @java.lang.Override
+    public final Builder mergeUnknownFields(
+        final com.google.protobuf.UnknownFieldSet unknownFields) {
+      return super.mergeUnknownFields(unknownFields);
+    }
+
+
+    // @@protoc_insertion_point(builder_scope:HelloResponse)
+  }
+
+  // @@protoc_insertion_point(class_scope:HelloResponse)
+  private static final com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse DEFAULT_INSTANCE;
+  static {
+    DEFAULT_INSTANCE = new com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse();
+  }
+
+  public static com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse getDefaultInstance() {
+    return DEFAULT_INSTANCE;
+  }
+
+  private static final com.google.protobuf.Parser<HelloResponse>
+      PARSER = new com.google.protobuf.AbstractParser<HelloResponse>() {
+    @java.lang.Override
+    public HelloResponse parsePartialFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return new HelloResponse(input, extensionRegistry);
+    }
+  };
+
+  public static com.google.protobuf.Parser<HelloResponse> parser() {
+    return PARSER;
+  }
+
+  @java.lang.Override
+  public com.google.protobuf.Parser<HelloResponse> getParserForType() {
+    return PARSER;
+  }
+
+  @java.lang.Override
+  public com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse getDefaultInstanceForType() {
+    return DEFAULT_INSTANCE;
+  }
+
+}
+

+ 21 - 0
recommend-server-client/src/main/java/com/tzld/piaoquan/recommend/server/gen/demo/HelloResponseOrBuilder.java

@@ -0,0 +1,21 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: com/tzld/piaoquan/recommend/server/hello.proto
+
+package com.tzld.piaoquan.recommend.server.gen.demo;
+
+public interface HelloResponseOrBuilder extends
+    // @@protoc_insertion_point(interface_extends:HelloResponse)
+    com.google.protobuf.MessageOrBuilder {
+
+  /**
+   * <code>string reply = 1;</code>
+   * @return The reply.
+   */
+  java.lang.String getReply();
+  /**
+   * <code>string reply = 1;</code>
+   * @return The bytes for reply.
+   */
+  com.google.protobuf.ByteString
+      getReplyBytes();
+}

+ 237 - 0
recommend-server-client/src/main/java/com/tzld/piaoquan/recommend/server/gen/demo/HelloService.java

@@ -0,0 +1,237 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: com/tzld/piaoquan/recommend/server/hello.proto
+
+package com.tzld.piaoquan.recommend.server.gen.demo;
+
+/**
+ * Protobuf service {@code HelloService}
+ */
+public  abstract class HelloService
+    implements com.google.protobuf.Service {
+  protected HelloService() {}
+
+  public interface Interface {
+    /**
+     * <code>rpc SayHello(.HelloRequest) returns (.HelloResponse);</code>
+     */
+    public abstract void sayHello(
+        com.google.protobuf.RpcController controller,
+        com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest request,
+        com.google.protobuf.RpcCallback<com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse> done);
+
+  }
+
+  public static com.google.protobuf.Service newReflectiveService(
+      final Interface impl) {
+    return new HelloService() {
+      @java.lang.Override
+      public  void sayHello(
+          com.google.protobuf.RpcController controller,
+          com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest request,
+          com.google.protobuf.RpcCallback<com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse> done) {
+        impl.sayHello(controller, request, done);
+      }
+
+    };
+  }
+
+  public static com.google.protobuf.BlockingService
+      newReflectiveBlockingService(final BlockingInterface impl) {
+    return new com.google.protobuf.BlockingService() {
+      public final com.google.protobuf.Descriptors.ServiceDescriptor
+          getDescriptorForType() {
+        return getDescriptor();
+      }
+
+      public final com.google.protobuf.Message callBlockingMethod(
+          com.google.protobuf.Descriptors.MethodDescriptor method,
+          com.google.protobuf.RpcController controller,
+          com.google.protobuf.Message request)
+          throws com.google.protobuf.ServiceException {
+        if (method.getService() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "Service.callBlockingMethod() given method descriptor for " +
+            "wrong service type.");
+        }
+        switch(method.getIndex()) {
+          case 0:
+            return impl.sayHello(controller, (com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest)request);
+          default:
+            throw new java.lang.AssertionError("Can't get here.");
+        }
+      }
+
+      public final com.google.protobuf.Message
+          getRequestPrototype(
+          com.google.protobuf.Descriptors.MethodDescriptor method) {
+        if (method.getService() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "Service.getRequestPrototype() given method " +
+            "descriptor for wrong service type.");
+        }
+        switch(method.getIndex()) {
+          case 0:
+            return com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest.getDefaultInstance();
+          default:
+            throw new java.lang.AssertionError("Can't get here.");
+        }
+      }
+
+      public final com.google.protobuf.Message
+          getResponsePrototype(
+          com.google.protobuf.Descriptors.MethodDescriptor method) {
+        if (method.getService() != getDescriptor()) {
+          throw new java.lang.IllegalArgumentException(
+            "Service.getResponsePrototype() given method " +
+            "descriptor for wrong service type.");
+        }
+        switch(method.getIndex()) {
+          case 0:
+            return com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse.getDefaultInstance();
+          default:
+            throw new java.lang.AssertionError("Can't get here.");
+        }
+      }
+
+    };
+  }
+
+  /**
+   * <code>rpc SayHello(.HelloRequest) returns (.HelloResponse);</code>
+   */
+  public abstract void sayHello(
+      com.google.protobuf.RpcController controller,
+      com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest request,
+      com.google.protobuf.RpcCallback<com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse> done);
+
+  public static final
+      com.google.protobuf.Descriptors.ServiceDescriptor
+      getDescriptor() {
+    return com.tzld.piaoquan.recommend.server.gen.demo.Hello.getDescriptor().getServices().get(0);
+  }
+  public final com.google.protobuf.Descriptors.ServiceDescriptor
+      getDescriptorForType() {
+    return getDescriptor();
+  }
+
+  public final void callMethod(
+      com.google.protobuf.Descriptors.MethodDescriptor method,
+      com.google.protobuf.RpcController controller,
+      com.google.protobuf.Message request,
+      com.google.protobuf.RpcCallback<
+        com.google.protobuf.Message> done) {
+    if (method.getService() != getDescriptor()) {
+      throw new java.lang.IllegalArgumentException(
+        "Service.callMethod() given method descriptor for wrong " +
+        "service type.");
+    }
+    switch(method.getIndex()) {
+      case 0:
+        this.sayHello(controller, (com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest)request,
+          com.google.protobuf.RpcUtil.<com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse>specializeCallback(
+            done));
+        return;
+      default:
+        throw new java.lang.AssertionError("Can't get here.");
+    }
+  }
+
+  public final com.google.protobuf.Message
+      getRequestPrototype(
+      com.google.protobuf.Descriptors.MethodDescriptor method) {
+    if (method.getService() != getDescriptor()) {
+      throw new java.lang.IllegalArgumentException(
+        "Service.getRequestPrototype() given method " +
+        "descriptor for wrong service type.");
+    }
+    switch(method.getIndex()) {
+      case 0:
+        return com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest.getDefaultInstance();
+      default:
+        throw new java.lang.AssertionError("Can't get here.");
+    }
+  }
+
+  public final com.google.protobuf.Message
+      getResponsePrototype(
+      com.google.protobuf.Descriptors.MethodDescriptor method) {
+    if (method.getService() != getDescriptor()) {
+      throw new java.lang.IllegalArgumentException(
+        "Service.getResponsePrototype() given method " +
+        "descriptor for wrong service type.");
+    }
+    switch(method.getIndex()) {
+      case 0:
+        return com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse.getDefaultInstance();
+      default:
+        throw new java.lang.AssertionError("Can't get here.");
+    }
+  }
+
+  public static Stub newStub(
+      com.google.protobuf.RpcChannel channel) {
+    return new Stub(channel);
+  }
+
+  public static final class Stub extends com.tzld.piaoquan.recommend.server.gen.demo.HelloService implements Interface {
+    private Stub(com.google.protobuf.RpcChannel channel) {
+      this.channel = channel;
+    }
+
+    private final com.google.protobuf.RpcChannel channel;
+
+    public com.google.protobuf.RpcChannel getChannel() {
+      return channel;
+    }
+
+    public  void sayHello(
+        com.google.protobuf.RpcController controller,
+        com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest request,
+        com.google.protobuf.RpcCallback<com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse> done) {
+      channel.callMethod(
+        getDescriptor().getMethods().get(0),
+        controller,
+        request,
+        com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse.getDefaultInstance(),
+        com.google.protobuf.RpcUtil.generalizeCallback(
+          done,
+          com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse.class,
+          com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse.getDefaultInstance()));
+    }
+  }
+
+  public static BlockingInterface newBlockingStub(
+      com.google.protobuf.BlockingRpcChannel channel) {
+    return new BlockingStub(channel);
+  }
+
+  public interface BlockingInterface {
+    public com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse sayHello(
+        com.google.protobuf.RpcController controller,
+        com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest request)
+        throws com.google.protobuf.ServiceException;
+  }
+
+  private static final class BlockingStub implements BlockingInterface {
+    private BlockingStub(com.google.protobuf.BlockingRpcChannel channel) {
+      this.channel = channel;
+    }
+
+    private final com.google.protobuf.BlockingRpcChannel channel;
+
+    public com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse sayHello(
+        com.google.protobuf.RpcController controller,
+        com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest request)
+        throws com.google.protobuf.ServiceException {
+      return (com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse) channel.callBlockingMethod(
+        getDescriptor().getMethods().get(0),
+        controller,
+        request,
+        com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse.getDefaultInstance());
+    }
+
+  }
+
+  // @@protoc_insertion_point(class_scope:HelloService)
+}
+

+ 288 - 0
recommend-server-client/src/main/java/com/tzld/piaoquan/recommend/server/gen/demo/HelloServiceGrpc.java

@@ -0,0 +1,288 @@
+package com.tzld.piaoquan.recommend.server.gen.demo;
+
+import static io.grpc.MethodDescriptor.generateFullMethodName;
+import static io.grpc.stub.ClientCalls.asyncBidiStreamingCall;
+import static io.grpc.stub.ClientCalls.asyncClientStreamingCall;
+import static io.grpc.stub.ClientCalls.asyncServerStreamingCall;
+import static io.grpc.stub.ClientCalls.asyncUnaryCall;
+import static io.grpc.stub.ClientCalls.blockingServerStreamingCall;
+import static io.grpc.stub.ClientCalls.blockingUnaryCall;
+import static io.grpc.stub.ClientCalls.futureUnaryCall;
+import static io.grpc.stub.ServerCalls.asyncBidiStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncClientStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncServerStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncUnaryCall;
+import static io.grpc.stub.ServerCalls.asyncUnimplementedStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall;
+
+/**
+ */
+@javax.annotation.Generated(
+    value = "by gRPC proto compiler (version 1.34.1)",
+    comments = "Source: com/tzld/piaoquan/recommend/server/hello.proto")
+public final class HelloServiceGrpc {
+
+  private HelloServiceGrpc() {}
+
+  public static final String SERVICE_NAME = "HelloService";
+
+  // Static method descriptors that strictly reflect the proto.
+  private static volatile io.grpc.MethodDescriptor<com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest,
+      com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse> getSayHelloMethod;
+
+  @io.grpc.stub.annotations.RpcMethod(
+      fullMethodName = SERVICE_NAME + '/' + "SayHello",
+      requestType = com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest.class,
+      responseType = com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse.class,
+      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+  public static io.grpc.MethodDescriptor<com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest,
+      com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse> getSayHelloMethod() {
+    io.grpc.MethodDescriptor<com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest, com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse> getSayHelloMethod;
+    if ((getSayHelloMethod = HelloServiceGrpc.getSayHelloMethod) == null) {
+      synchronized (HelloServiceGrpc.class) {
+        if ((getSayHelloMethod = HelloServiceGrpc.getSayHelloMethod) == null) {
+          HelloServiceGrpc.getSayHelloMethod = getSayHelloMethod =
+              io.grpc.MethodDescriptor.<com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest, com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse>newBuilder()
+              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
+              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SayHello"))
+              .setSampledToLocalTracing(true)
+              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest.getDefaultInstance()))
+              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse.getDefaultInstance()))
+              .setSchemaDescriptor(new HelloServiceMethodDescriptorSupplier("SayHello"))
+              .build();
+        }
+      }
+    }
+    return getSayHelloMethod;
+  }
+
+  /**
+   * Creates a new async stub that supports all call types for the service
+   */
+  public static HelloServiceStub newStub(io.grpc.Channel channel) {
+    io.grpc.stub.AbstractStub.StubFactory<HelloServiceStub> factory =
+      new io.grpc.stub.AbstractStub.StubFactory<HelloServiceStub>() {
+        @java.lang.Override
+        public HelloServiceStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+          return new HelloServiceStub(channel, callOptions);
+        }
+      };
+    return HelloServiceStub.newStub(factory, channel);
+  }
+
+  /**
+   * Creates a new blocking-style stub that supports unary and streaming output calls on the service
+   */
+  public static HelloServiceBlockingStub newBlockingStub(
+      io.grpc.Channel channel) {
+    io.grpc.stub.AbstractStub.StubFactory<HelloServiceBlockingStub> factory =
+      new io.grpc.stub.AbstractStub.StubFactory<HelloServiceBlockingStub>() {
+        @java.lang.Override
+        public HelloServiceBlockingStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+          return new HelloServiceBlockingStub(channel, callOptions);
+        }
+      };
+    return HelloServiceBlockingStub.newStub(factory, channel);
+  }
+
+  /**
+   * Creates a new ListenableFuture-style stub that supports unary calls on the service
+   */
+  public static HelloServiceFutureStub newFutureStub(
+      io.grpc.Channel channel) {
+    io.grpc.stub.AbstractStub.StubFactory<HelloServiceFutureStub> factory =
+      new io.grpc.stub.AbstractStub.StubFactory<HelloServiceFutureStub>() {
+        @java.lang.Override
+        public HelloServiceFutureStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+          return new HelloServiceFutureStub(channel, callOptions);
+        }
+      };
+    return HelloServiceFutureStub.newStub(factory, channel);
+  }
+
+  /**
+   */
+  public static abstract class HelloServiceImplBase implements io.grpc.BindableService {
+
+    /**
+     */
+    public void sayHello(com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest request,
+        io.grpc.stub.StreamObserver<com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse> responseObserver) {
+      asyncUnimplementedUnaryCall(getSayHelloMethod(), responseObserver);
+    }
+
+    @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() {
+      return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
+          .addMethod(
+            getSayHelloMethod(),
+            asyncUnaryCall(
+              new MethodHandlers<
+                com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest,
+                com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse>(
+                  this, METHODID_SAY_HELLO)))
+          .build();
+    }
+  }
+
+  /**
+   */
+  public static final class HelloServiceStub extends io.grpc.stub.AbstractAsyncStub<HelloServiceStub> {
+    private HelloServiceStub(
+        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+      super(channel, callOptions);
+    }
+
+    @java.lang.Override
+    protected HelloServiceStub build(
+        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+      return new HelloServiceStub(channel, callOptions);
+    }
+
+    /**
+     */
+    public void sayHello(com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest request,
+        io.grpc.stub.StreamObserver<com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse> responseObserver) {
+      asyncUnaryCall(
+          getChannel().newCall(getSayHelloMethod(), getCallOptions()), request, responseObserver);
+    }
+  }
+
+  /**
+   */
+  public static final class HelloServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub<HelloServiceBlockingStub> {
+    private HelloServiceBlockingStub(
+        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+      super(channel, callOptions);
+    }
+
+    @java.lang.Override
+    protected HelloServiceBlockingStub build(
+        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+      return new HelloServiceBlockingStub(channel, callOptions);
+    }
+
+    /**
+     */
+    public com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse sayHello(com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest request) {
+      return blockingUnaryCall(
+          getChannel(), getSayHelloMethod(), getCallOptions(), request);
+    }
+  }
+
+  /**
+   */
+  public static final class HelloServiceFutureStub extends io.grpc.stub.AbstractFutureStub<HelloServiceFutureStub> {
+    private HelloServiceFutureStub(
+        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+      super(channel, callOptions);
+    }
+
+    @java.lang.Override
+    protected HelloServiceFutureStub build(
+        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+      return new HelloServiceFutureStub(channel, callOptions);
+    }
+
+    /**
+     */
+    public com.google.common.util.concurrent.ListenableFuture<com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse> sayHello(
+        com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest request) {
+      return futureUnaryCall(
+          getChannel().newCall(getSayHelloMethod(), getCallOptions()), request);
+    }
+  }
+
+  private static final int METHODID_SAY_HELLO = 0;
+
+  private static final class MethodHandlers<Req, Resp> implements
+      io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
+      io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>,
+      io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>,
+      io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
+    private final HelloServiceImplBase serviceImpl;
+    private final int methodId;
+
+    MethodHandlers(HelloServiceImplBase serviceImpl, int methodId) {
+      this.serviceImpl = serviceImpl;
+      this.methodId = methodId;
+    }
+
+    @java.lang.Override
+    @java.lang.SuppressWarnings("unchecked")
+    public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
+      switch (methodId) {
+        case METHODID_SAY_HELLO:
+          serviceImpl.sayHello((com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest) request,
+              (io.grpc.stub.StreamObserver<com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse>) responseObserver);
+          break;
+        default:
+          throw new AssertionError();
+      }
+    }
+
+    @java.lang.Override
+    @java.lang.SuppressWarnings("unchecked")
+    public io.grpc.stub.StreamObserver<Req> invoke(
+        io.grpc.stub.StreamObserver<Resp> responseObserver) {
+      switch (methodId) {
+        default:
+          throw new AssertionError();
+      }
+    }
+  }
+
+  private static abstract class HelloServiceBaseDescriptorSupplier
+      implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
+    HelloServiceBaseDescriptorSupplier() {}
+
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() {
+      return com.tzld.piaoquan.recommend.server.gen.demo.Hello.getDescriptor();
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() {
+      return getFileDescriptor().findServiceByName("HelloService");
+    }
+  }
+
+  private static final class HelloServiceFileDescriptorSupplier
+      extends HelloServiceBaseDescriptorSupplier {
+    HelloServiceFileDescriptorSupplier() {}
+  }
+
+  private static final class HelloServiceMethodDescriptorSupplier
+      extends HelloServiceBaseDescriptorSupplier
+      implements io.grpc.protobuf.ProtoMethodDescriptorSupplier {
+    private final String methodName;
+
+    HelloServiceMethodDescriptorSupplier(String methodName) {
+      this.methodName = methodName;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() {
+      return getServiceDescriptor().findMethodByName(methodName);
+    }
+  }
+
+  private static volatile io.grpc.ServiceDescriptor serviceDescriptor;
+
+  public static io.grpc.ServiceDescriptor getServiceDescriptor() {
+    io.grpc.ServiceDescriptor result = serviceDescriptor;
+    if (result == null) {
+      synchronized (HelloServiceGrpc.class) {
+        result = serviceDescriptor;
+        if (result == null) {
+          serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME)
+              .setSchemaDescriptor(new HelloServiceFileDescriptorSupplier())
+              .addMethod(getSayHelloMethod())
+              .build();
+        }
+      }
+    }
+    return result;
+  }
+}

+ 18 - 0
recommend-server-client/src/main/proto/com/tzld/piaoquan/recommend/server/hello.proto

@@ -0,0 +1,18 @@
+syntax = "proto3";
+
+option java_multiple_files = true;
+option java_package = "com.tzld.piaoquan.recommend.server.gen.demo";
+option java_generic_services = true;
+
+service HelloService {
+  rpc SayHello (HelloRequest) returns (HelloResponse);
+}
+
+message HelloRequest {
+  string greeting = 1;
+}
+
+message HelloResponse {
+  string reply = 1;
+}
+

+ 0 - 19
recommend-server-runner/pom.xml

@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>recommend-server</artifactId>
-        <groupId>com.tzld.piaoquan</groupId>
-        <version>1.0.0</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>recommend-server-runner</artifactId>
-
-    <properties>
-        <maven.compiler.source>8</maven.compiler.source>
-        <maven.compiler.target>8</maven.compiler.target>
-    </properties>
-
-</project>

+ 0 - 27
recommend-server-runner/src/main/java/server/Application.java

@@ -1,27 +0,0 @@
-package server;
-
-import com.tzld.piaoquan.recommend.sort.interceptor.AbTestInterceptor;
-import org.mybatis.spring.annotation.MapperScan;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.web.servlet.ServletComponentScan;
-import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
-import org.springframework.cloud.openfeign.EnableFeignClients;
-import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-import springfox.documentation.swagger2.annotations.EnableSwagger2;
-
-@SpringBootApplication
-@MapperScan("com.tzld.piaoquan.recommend.sort.dao")
-@ServletComponentScan("com.tzld.piaoquan.recommend.sort.controller")
-@EnableEurekaClient
-public class Application implements WebMvcConfigurer {
-    private static final Logger LOGGER = LoggerFactory.getLogger(Application.class);
-
-    public static void main(String[] args) {
-        SpringApplication.run(Application.class, args);
-        LOGGER.info("piaoquan SpringBoot Start Success");
-    }
-}

+ 117 - 0
recommend-server-service/pom.xml

@@ -11,5 +11,122 @@
     <artifactId>recommend-server-service</artifactId>
     <name>recommend-server-service</name>
     <description>recommend-server-service</description>
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-commons</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-pool2</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.junit.vintage</groupId>
+                    <artifactId>junit-vintage-engine</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.mybatis.spring.boot</groupId>
+            <artifactId>mybatis-spring-boot-starter</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.mybatis.generator</groupId>
+            <artifactId>mybatis-generator-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.github.pagehelper</groupId>
+            <artifactId>pagehelper-spring-boot-starter</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-redis</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.ctrip.framework.apollo</groupId>
+            <artifactId>apollo-client</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.csp</groupId>
+            <artifactId>sentinel-datasource-apollo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.google.protobuf</groupId>
+            <artifactId>protobuf-java</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.aliyun.openservices</groupId>
+            <artifactId>aliyun-log-logback-appender</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>net.devh</groupId>
+            <artifactId>grpc-server-spring-boot-starter</artifactId>
+            <version>2.9.0.RELEASE</version>
+        </dependency>
+        <dependency>
+            <groupId>com.tzld.piaoquan</groupId>
+            <artifactId>recommend-server-client</artifactId>
+            <version>1.0.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.protobuf</groupId>
+            <artifactId>protobuf-java</artifactId>
+            <version>3.9.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.18.24</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.sun.jersey</groupId>
+            <artifactId>jersey-client</artifactId>
+            <version>1.9.1</version>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.jersey</groupId>
+            <artifactId>jersey-core</artifactId>
+            <version>1.9.1</version>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.jersey.contribs</groupId>
+            <artifactId>jersey-apache-client4</artifactId>
+            <version>1.9.1</version>
+        </dependency>
+    </dependencies>
 
 </project>

+ 17 - 0
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/Application.java

@@ -0,0 +1,17 @@
+package com.tzld.piaoquan.recommend.server;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
+import org.springframework.context.annotation.ComponentScan;
+
+@SpringBootApplication
+@MapperScan("com.tzld.piaoquan.recommend.server.dao")
+@ComponentScan("com.tzld.piaoquan.recommend.server.service")
+@EnableEurekaClient
+public class Application {
+    public static void main(String[] args) {
+        SpringApplication.run(Application.class);
+    }
+}

+ 0 - 11
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/common/base/CacheKeyConstant.java

@@ -1,11 +0,0 @@
-package com.tzld.piaoquan.recommend.sort.common.base;
-
-/**
- * 缓存Key
- *
- * @author supeng
- * @date 2020/08/31
- */
-public class CacheKeyConstant {
-
-}

+ 0 - 40
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/common/base/CommonRequest.java

@@ -1,40 +0,0 @@
-package com.tzld.piaoquan.recommend.sort.common.base;
-
-import com.tzld.piaoquan.recommend.sort.model.dto.BaseInfoDTO;
-
-/**
- * 请求参数
- *
- * @author supeng
- */
-public class CommonRequest<T> {
-    /**
-     * 基础信息
-     */
-    BaseInfoDTO baseInfo;
-    /**
-     * 请求参数
-     */
-    T params;
-
-    public BaseInfoDTO getBaseInfo() {
-        return baseInfo;
-    }
-
-    public void setBaseInfo(BaseInfoDTO baseInfo) {
-        this.baseInfo = baseInfo;
-    }
-
-    public T getParams() {
-        return params;
-    }
-
-    public void setParams(T params) {
-        this.params = params;
-    }
-
-    @Override
-    public String toString() {
-        return "CommonRequest{" + "baseInfo=" + baseInfo + ", params=" + params + '}';
-    }
-}

+ 0 - 97
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/common/base/CommonResponse.java

@@ -1,97 +0,0 @@
-package com.tzld.piaoquan.recommend.sort.common.base;
-
-import com.tzld.piaoquan.recommend.sort.common.enums.ExceptionEnum;
-
-/**
- * Common Response
- */
-public class CommonResponse<T> {
-
-    private static final int SUCCESS_CODE = 0;
-    private static final String SUCCESS_MSG = "success";
-
-    /** 返回状态码,0 表示业务成功 */
-    private int code = 0;
-    /** 返回消息 */
-    private String msg = "success";
-    /** 业务成功时返回数据 */
-    private T data;
-    /** 重定向 */
-    private String redirect;
-
-    public boolean isSuccess() {
-        return this.code == SUCCESS_CODE;
-    }
-
-    public static <T> CommonResponse<T> success() {
-        CommonResponse<T> commonResponse = new CommonResponse<>();
-        commonResponse.setCode(SUCCESS_CODE);
-        commonResponse.setMsg(SUCCESS_MSG);
-        return commonResponse;
-    }
-
-    public static <T> CommonResponse<T> success(T data) {
-        CommonResponse<T> commonResponse = new CommonResponse<>();
-        commonResponse.setCode(SUCCESS_CODE);
-        commonResponse.setMsg(SUCCESS_MSG);
-        commonResponse.setData(data);
-        return commonResponse;
-    }
-
-    public static <T> CommonResponse<T> create() {
-        return create(SUCCESS_CODE, SUCCESS_MSG, null);
-    }
-    
-    public static <T> CommonResponse<T> create(T data) {
-        return create(SUCCESS_CODE, SUCCESS_MSG, data);
-    }
-
-    public static <T> CommonResponse<T> create(int code, String msg) {
-        return create(code, msg, null);
-    }
-
-    public static <T> CommonResponse<T> create(ExceptionEnum exceptionEnum) {
-        return create(exceptionEnum.getCode(), exceptionEnum.getMsg(), null);
-    }
-
-    public static <T> CommonResponse<T> create(int code, String msg, T data) {
-        CommonResponse<T> commonResponse = new CommonResponse<>();
-        commonResponse.setCode(code);
-        commonResponse.setMsg(msg);
-        commonResponse.setData(data);
-        return commonResponse;
-    }
-
-    public int getCode() {
-        return code;
-    }
-
-    public void setCode(int code) {
-        this.code = code;
-    }
-
-    public String getMsg() {
-        return msg;
-    }
-
-    public void setMsg(String msg) {
-        this.msg = msg;
-    }
-
-    public T getData() {
-        return data;
-    }
-
-    public void setData(T data) {
-        this.data = data;
-    }
-
-    public String getRedirect() {
-        return redirect;
-    }
-
-    public void setRedirect(String redirect) {
-        this.redirect = redirect;
-    }
-
-}

+ 1 - 1
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/common/base/Constant.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.recommend.sort.common.base;
+package com.tzld.piaoquan.recommend.server.common.base;
 
 /**
  * 常量

+ 1 - 1
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/common/enums/AppTypeEnum.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.recommend.sort.common.enums;
+package com.tzld.piaoquan.recommend.server.common.enums;
 
 /**
  * AppType

+ 1 - 1
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/common/enums/ExceptionEnum.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.recommend.sort.common.enums;
+package com.tzld.piaoquan.recommend.server.common.enums;
 
 /**
  * 异常

+ 1 - 1
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/common/enums/PlatformEnum.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.recommend.sort.common.enums;
+package com.tzld.piaoquan.recommend.server.common.enums;
 
 /**
  * 平台

+ 2 - 2
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/common/exception/CommonException.java

@@ -1,6 +1,6 @@
-package com.tzld.piaoquan.recommend.sort.common.exception;
+package com.tzld.piaoquan.recommend.server.common.exception;
 
-import com.tzld.piaoquan.recommend.sort.common.enums.ExceptionEnum;
+import com.tzld.piaoquan.recommend.server.common.enums.ExceptionEnum;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

+ 1 - 1
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/common/exception/HttpServiceException.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.recommend.sort.common.exception;
+package com.tzld.piaoquan.recommend.server.common.exception;
 
 /**
  *

+ 1 - 1
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/common/exception/TimeoutException.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.recommend.sort.common.exception;
+package com.tzld.piaoquan.recommend.server.common.exception;
 
 
 public class TimeoutException extends RuntimeException {

+ 1 - 1
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/config/RedisTemplateConfig.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.recommend.sort.config;
+package com.tzld.piaoquan.recommend.server.config;
 
 import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
 import org.springframework.beans.factory.annotation.Qualifier;

+ 0 - 54
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/config/SwaggerConfig.java

@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 com.tzld.piaoquan.recommend.sort.config;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Profile;
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spring.web.plugins.Docket;
-
-/**
- * swagger2 配置
- * @author supeng
- */
-@Configuration
-@Profile({"dev","test","pre"})
-public class SwaggerConfig {
-    @Bean
-    public Docket createRestApi() {
-        return new Docket(DocumentationType.SWAGGER_2)
-                .apiInfo(apiInfo())
-                .select()
-                .apis(RequestHandlerSelectors.basePackage("com.tzld.piaoquan.recommend.sort.controller"))
-                .paths(PathSelectors.any())
-                .build();
-    }
-
-    private ApiInfo apiInfo() {
-        return new ApiInfoBuilder()
-                .title("recommend-sort server swagger api")
-                .description("recommend-sort server swagger api")
-                .version("1.0")
-                .build();
-    }
-}

+ 1 - 1
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/dao/generator/MybatisGeneratorMain.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.recommend.sort.dao.generator;
+package com.tzld.piaoquan.recommend.server.dao.generator;
 
 import java.io.File;
 import java.io.IOException;

+ 0 - 79
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/handle/GlobalExceptionHandle.java

@@ -1,79 +0,0 @@
-package com.tzld.piaoquan.recommend.sort.handle;
-
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.util.CollectionUtils;
-import org.springframework.validation.BindException;
-import org.springframework.validation.ObjectError;
-import org.springframework.web.bind.MethodArgumentNotValidException;
-import org.springframework.web.bind.annotation.ExceptionHandler;
-import org.springframework.web.bind.annotation.RestControllerAdvice;
-
-import com.tzld.piaoquan.recommend.sort.common.base.CommonResponse;
-import com.tzld.piaoquan.recommend.sort.common.enums.ExceptionEnum;
-import com.tzld.piaoquan.recommend.sort.common.exception.CommonException;
-
-/**
- * 全局异常处理器
- * 
- * @author liuzhiheng
- * @date 2020年11月20日 上午11:04:48
- * @version 1.0
- */
-
-@RestControllerAdvice
-public class GlobalExceptionHandle {
-
-    private static Logger LOGGER = LoggerFactory.getLogger(GlobalExceptionHandle.class);
-
-    @ExceptionHandler
-    public Object handleException(HttpServletRequest req, Exception exception) throws Exception {
-        String uri = req.getRequestURI();
-        CommonResponse<Object> response = new CommonResponse<Object>();
-        // 业务异常
-        if (exception instanceof CommonException) {
-            CommonException e = (CommonException) exception;
-            response.setCode(e.getCode());
-            response.setMsg(e.getMsg());
-            LOGGER.warn("uri:" + uri + "\n" + "CustomException log.", exception);
-        } else if (exception instanceof MethodArgumentNotValidException) {
-            // 参数校验异常
-            MethodArgumentNotValidException e = (MethodArgumentNotValidException) exception;
-            List<ObjectError> errorList = e.getBindingResult().getAllErrors();
-            StringBuilder errorMsg = new StringBuilder();
-            errorMsg.append("|");
-            if (!CollectionUtils.isEmpty(errorList)) {
-                for (ObjectError objectError : errorList) {
-                    errorMsg.append(objectError.getDefaultMessage()).append("|");
-                }
-            }
-            response.setCode(ExceptionEnum.PARAM_ERROR.getCode());
-            response.setMsg(errorMsg.toString());
-            LOGGER.warn("uri:" + uri + "\n" + "MethodArgumentNotValidException log.", exception);
-        } else if (exception instanceof BindException) {
-            // 参数绑定异常
-            BindException e = (BindException) exception;
-            List<ObjectError> errorList = e.getBindingResult().getAllErrors();
-            StringBuilder errorMsg = new StringBuilder();
-            errorMsg.append("|");
-            if (!CollectionUtils.isEmpty(errorList)) {
-                for (ObjectError objectError : errorList) {
-                    errorMsg.append(objectError.getDefaultMessage()).append("|");
-                }
-            }
-            response.setCode(ExceptionEnum.PARAM_ERROR.getCode());
-            response.setMsg(errorMsg.toString());
-            LOGGER.warn("uri:" + uri + "\n" + "BindException log.", exception);
-        } else {
-            response.setCode(ExceptionEnum.SYSTEM_ERROR.getCode());
-            response.setMsg(ExceptionEnum.SYSTEM_ERROR.getMsg());
-            LOGGER.error("uri:" + uri + "\n" + "unknow exception log.", exception);
-        }
-        return response;
-    }
-
-}

+ 0 - 21
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/handle/SentinelBlockExceptionHandler.java

@@ -1,21 +0,0 @@
-package com.tzld.piaoquan.recommend.sort.handle;
-
-import com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.BlockExceptionHandler;
-import com.alibaba.csp.sentinel.slots.block.BlockException;
-import com.tzld.piaoquan.recommend.sort.common.enums.ExceptionEnum;
-import com.tzld.piaoquan.recommend.sort.common.exception.CommonException;
-import org.springframework.stereotype.Component;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-@Component
-public class SentinelBlockExceptionHandler implements BlockExceptionHandler {
-
-    @Override
-    public void handle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse,
-                       BlockException e) throws Exception {
-        throw new CommonException(ExceptionEnum.FLOW_CONTROL);
-    }
-}
-

+ 0 - 40
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/interceptor/AbTestInterceptor.java

@@ -1,40 +0,0 @@
-package com.tzld.piaoquan.recommend.sort.interceptor;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
-import org.springframework.web.servlet.HandlerInterceptor;
-import org.springframework.web.servlet.ModelAndView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * AbTest 拦截器
- *
- * @author supeng
- * @date 2020/08/26
- */
-@Component
-public class AbTestInterceptor implements HandlerInterceptor {
-    private static final Logger LOGGER = LoggerFactory.getLogger(AbTestInterceptor.class);
-
-
-    @Override
-    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
-        String uri = request.getRequestURI();
-        LOGGER.info("uri = {}", uri);
-        //TODO
-        return true;
-    }
-
-    @Override
-    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
-
-    }
-
-    @Override
-    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
-
-    }
-}

+ 0 - 170
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/model/dto/BaseInfoDTO.java

@@ -1,170 +0,0 @@
-package com.tzld.piaoquan.recommend.sort.model.dto;
-
-import io.swagger.annotations.ApiModelProperty;
-
-/**
- * 基础信息
- *
- * @author supeng
- * @date 2020/08/28
- */
-public class BaseInfoDTO {
-    /// 用户信息
-    @ApiModelProperty(value = "公共参数-token值")
-    private String token;
-    @ApiModelProperty(value = "公共参数-登录用户ID")
-    private Long loginUid;
-
-    /// 应用信息
-    @ApiModelProperty(value = "公共参数-应用版本号")
-    private Integer appVersionCode;
-    @ApiModelProperty(value = "公共参数-产品代号")
-    private Integer appType;
-
-    /// 设备信息
-    @ApiModelProperty(value = "公共参数-手机设备的唯一码")
-    private String machineCode;
-    @ApiModelProperty(value = "公共参数-ios,android")
-    private String platform;
-    @ApiModelProperty(value = "公共参数-系统版本(例:ios10.1)")
-    private String systemVersion;
-    @ApiModelProperty(value = "公共参数-手机信息")
-    private String machineInfo;
-    @ApiModelProperty(value = "公共参数-网络类型 WI-FI 5G 4G 3G 2G")
-    private String networkType;
-    @ApiModelProperty(value = "公共参数-客户端ip")
-    private String clientIp;
-
-    // pageSource相关的参数
-    @ApiModelProperty(value = "公共参数-页面来源")
-    private String pageSource;
-
-    // 某次操作相关的参数
-    @ApiModelProperty(value = "公共参数-前端请求时间")
-    private Long clientTimestamp;
-    @ApiModelProperty(value = "公共参数-sessionId")
-    private String sessionId;
-    @ApiModelProperty(value = "公共参数-requestId,每次请求客户端生成唯一ID,不超过64位")
-    private String requestId;
-
-    public String getToken() {
-        return token;
-    }
-
-    public void setToken(String token) {
-        this.token = token;
-    }
-
-    public Long getLoginUid() {
-        return loginUid;
-    }
-
-    public void setLoginUid(Long loginUid) {
-        this.loginUid = loginUid;
-    }
-
-    public Integer getAppVersionCode() {
-        return appVersionCode;
-    }
-
-    public void setAppVersionCode(Integer appVersionCode) {
-        this.appVersionCode = appVersionCode;
-    }
-
-    public Integer getAppType() {
-        return appType;
-    }
-
-    public void setAppType(Integer appType) {
-        this.appType = appType;
-    }
-
-    public String getMachineCode() {
-        return machineCode;
-    }
-
-    public void setMachineCode(String machineCode) {
-        this.machineCode = machineCode;
-    }
-
-    public String getPlatform() {
-        return platform;
-    }
-
-    public void setPlatform(String platform) {
-        this.platform = platform;
-    }
-
-    public String getSystemVersion() {
-        return systemVersion;
-    }
-
-    public void setSystemVersion(String systemVersion) {
-        this.systemVersion = systemVersion;
-    }
-
-    public String getMachineInfo() {
-        return machineInfo;
-    }
-
-    public void setMachineInfo(String machineInfo) {
-        this.machineInfo = machineInfo;
-    }
-
-    public String getNetworkType() {
-        return networkType;
-    }
-
-    public void setNetworkType(String networkType) {
-        this.networkType = networkType;
-    }
-
-    public String getClientIp() {
-        return clientIp;
-    }
-
-    public void setClientIp(String clientIp) {
-        this.clientIp = clientIp;
-    }
-
-    public String getPageSource() {
-        return pageSource;
-    }
-
-    public void setPageSource(String pageSource) {
-        this.pageSource = pageSource;
-    }
-
-    public Long getClientTimestamp() {
-        return clientTimestamp;
-    }
-
-    public void setClientTimestamp(Long clientTimestamp) {
-        this.clientTimestamp = clientTimestamp;
-    }
-
-    public String getSessionId() {
-        return sessionId;
-    }
-
-    public void setSessionId(String sessionId) {
-        this.sessionId = sessionId;
-    }
-
-    public String getRequestId() {
-        return requestId;
-    }
-
-    public void setRequestId(String requestId) {
-        this.requestId = requestId;
-    }
-
-    @Override
-    public String toString() {
-        return String.format(
-            "BaseInfoDTO [token=%s, appVersionCode=%s, appType=%s, machineCode=%s, platform=%s, systemVersion=%s, machineInfo=%s, networkType=%s, clientIp=%s, pageSource=%s, clientTimestamp=%s, sessionId=%s, requestId=%s]",
-            token, appVersionCode, appType, machineCode, platform, systemVersion, machineInfo, networkType, clientIp,
-            pageSource, clientTimestamp, sessionId, requestId);
-    }
-
-}

+ 1 - 1
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/model/dto/PageDTO.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.recommend.sort.model.dto;
+package com.tzld.piaoquan.recommend.server.model.dto;
 
 /**
  * @author supeng

+ 0 - 24
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/model/param/ExampleParam.java

@@ -1,24 +0,0 @@
-package com.tzld.piaoquan.recommend.sort.model.param;
-
-import io.swagger.annotations.ApiModelProperty;
-
-/**
- * 请求业务参数
- * 
- * @author liuzhiheng
- * @date 2021年2月2日 下午3:00:14
- * @version 1.0
- */
-public class ExampleParam {
-	@ApiModelProperty(value = "name")
-	private String name;
-
-	public String getName() {
-		return name;
-	}
-
-	public void setName(String name) {
-		this.name = name;
-	}
-
-}

+ 0 - 23
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/model/vo/ExampleVO.java

@@ -1,23 +0,0 @@
-package com.tzld.piaoquan.recommend.sort.model.vo;
-
-import io.swagger.annotations.ApiModelProperty;
-
-/**
- * 返回参数vo
- *
- * @author supeng
- * @date 2020/08/31
- */
-public class ExampleVO {
-	@ApiModelProperty(value = "greeting")
-	private String greeting;
-
-	public String getGreeting() {
-		return greeting;
-	}
-
-	public void setGreeting(String greeting) {
-		this.greeting = greeting;
-	}
-
-}

+ 0 - 14
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/ExampleService.java

@@ -1,14 +0,0 @@
-package com.tzld.piaoquan.recommend.sort.service;
-
-import com.tzld.piaoquan.recommend.sort.model.vo.ExampleVO;
-
-/**
- *
- * @author supeng
- * @date 2020/08/31
- */
-public interface ExampleService {
-
-	ExampleVO greeting(String name);
-
-}

+ 19 - 0
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/HelloService.java

@@ -0,0 +1,19 @@
+package com.tzld.piaoquan.recommend.server.service;
+
+import com.tzld.piaoquan.recommend.server.gen.demo.HelloRequest;
+import com.tzld.piaoquan.recommend.server.gen.demo.HelloResponse;
+import com.tzld.piaoquan.recommend.server.gen.demo.HelloServiceGrpc;
+import io.grpc.stub.StreamObserver;
+import net.devh.boot.grpc.server.service.GrpcService;
+
+/**
+ * @author dyp
+ */
+@GrpcService
+public class HelloService extends HelloServiceGrpc.HelloServiceImplBase{
+    public void sayHello(HelloRequest request, StreamObserver<HelloResponse> responseObserver) {
+        HelloResponse.Builder builder = HelloResponse.newBuilder().setReply(request.getGreeting());
+        responseObserver.onNext(builder.build());
+        responseObserver.onCompleted();
+    }
+}

+ 0 - 104
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/impl/ExampleServiceImpl.java

@@ -1,104 +0,0 @@
-package com.tzld.piaoquan.recommend.sort.service.impl;
-
-import com.google.common.util.concurrent.ThreadFactoryBuilder;
-import com.tzld.piaoquan.recommend.sort.service.ExampleService;
-import com.tzld.piaoquan.recommend.sort.util.HttpClientUtil;
-import com.tzld.piaoquan.recommend.sort.util.HttpPoolClient;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Service;
-
-import com.tzld.piaoquan.recommend.sort.model.vo.ExampleVO;
-
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
-import java.util.List;
-import java.util.concurrent.*;
-
-@Service
-public class ExampleServiceImpl implements ExampleService {
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(ExampleServiceImpl.class);
-
-    private static final HttpPoolClient httpPoolClient = HttpClientUtil.useDefault();
-
-    /**
-     * 线程池队列大小
-     */
-    private static final int QUEUE_MAX_SIZE = 100000;
-    /**
-     * 线程命名
-     */
-    private static ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat("example-service-pool-%d").build();
-    /**
-     * 线程池
-     */
-    private static ExecutorService pool;
-
-    @PostConstruct
-    public void init() {
-        //init thread pool
-        pool = new ThreadPoolExecutor(32, 32,
-                0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(QUEUE_MAX_SIZE), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
-    }
-
-    @PreDestroy
-    public void destroy() {
-        //gracefully shutdown
-        pool.shutdown();
-    }
-
-    @Override
-    public ExampleVO greeting(String name) {
-        LOGGER.info("name:{}", name);
-        ExampleVO vo = new ExampleVO();
-        vo.setGreeting("hello, " + name);
-        //20路召回
-        CountDownLatch countDownLatch = new CountDownLatch(20);
-        List<Long> videoIds = new CopyOnWriteArrayList<>();
-        //召回1
-        pool.execute(() -> {
-            try {
-                //TODO
-//                videoIds.addAll();
-            } catch (Exception e) {
-                LOGGER.error("recall 1 error", e);
-            } finally {
-                countDownLatch.countDown();
-            }
-        });
-        //召回2
-        pool.execute(() -> {
-            try {
-                //TODO
-//                videoIds.addAll();
-            } catch (Exception e) {
-                LOGGER.error("recall 2 error", e);
-            } finally {
-                countDownLatch.countDown();
-            }
-        });
-        //召回3
-        pool.execute(() -> {
-            try {
-                //TODO
-//                videoIds.addAll();
-            } catch (Exception e) {
-                LOGGER.error("recall 3 error", e);
-            } finally {
-                countDownLatch.countDown();
-            }
-        });
-
-        //...
-
-        try {
-            countDownLatch.await(1000, TimeUnit.MICROSECONDS);
-        } catch (InterruptedException e) {
-            LOGGER.error("recall error", e);
-        }
-
-        return vo;
-    }
-
-}

+ 1 - 1
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/util/HttpClientUtil.java

@@ -1,4 +1,4 @@
-package com.tzld.piaoquan.recommend.sort.util;
+package com.tzld.piaoquan.recommend.server.util;
 
 import java.util.HashMap;
 import java.util.Map;

+ 3 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/util/HttpPoolClient.java

@@ -1,8 +1,8 @@
-package com.tzld.piaoquan.recommend.sort.util;
+package com.tzld.piaoquan.recommend.server.util;
 
 import com.google.common.collect.Lists;
-import com.tzld.piaoquan.recommend.sort.common.exception.HttpServiceException;
-import com.tzld.piaoquan.recommend.sort.common.exception.TimeoutException;
+import com.tzld.piaoquan.recommend.server.common.exception.HttpServiceException;
+import com.tzld.piaoquan.recommend.server.common.exception.TimeoutException;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.concurrent.BasicThreadFactory;
 import org.apache.http.HttpEntity;

+ 5 - 1
recommend-server-runner/src/main/resources/application-dev.yml → recommend-server-service/src/main/resources/application-dev.yml

@@ -61,4 +61,8 @@ aliyun:
     endpoint: cn-hangzhou.log.aliyuncs.com
     accessKeyId: LTAIP6x1l3DXfSxm
     accessKeySecret: KbTaM9ars4OX3PMS6Xm7rtxGr1FLon
-    project: ms-recommend-sort-test
+    project: ms-recommend-sort-test
+
+logging:
+  file:
+    path: /Users/dingyunpeng/Desktop/code/pq/recommend-server/logs/${spring.application.name}/

+ 0 - 0
recommend-server-runner/src/main/resources/application-pre.yml → recommend-server-service/src/main/resources/application-pre.yml


+ 0 - 0
recommend-server-runner/src/main/resources/application-prod.yml → recommend-server-service/src/main/resources/application-prod.yml


+ 0 - 0
recommend-server-runner/src/main/resources/application-test.yml → recommend-server-service/src/main/resources/application-test.yml


+ 1 - 1
recommend-server-runner/src/main/resources/application.yml → recommend-server-service/src/main/resources/application.yml

@@ -2,7 +2,7 @@ spring:
   profiles:
     active: dev
   application:
-    name: recommend-sort
+    name: recommend-server
 #  cloud:
 #    sentinel:
 #      eager: true

+ 5 - 5
recommend-server-runner/src/main/resources/logback-spring.xml → recommend-server-service/src/main/resources/logback-spring.xml

@@ -285,19 +285,19 @@
     -->
 
     <springProfile name="dev">
-        <logger name="com.tzld.piaoquan.recommend.sort" level="info"/>
+        <logger name="com.tzld.piaoquan.recommend.server" level="info"/>
     </springProfile>
     <springProfile name="test">
-        <logger name="com.tzld.piaoquan.recommend.sort" level="info"/>
+        <logger name="com.tzld.piaoquan.recommend.server" level="info"/>
     </springProfile>
     <springProfile name="pre">
-        <logger name="com.tzld.piaoquan.recommend.sort" level="info"/>
+        <logger name="com.tzld.piaoquan.recommend.server" level="info"/>
     </springProfile>
     <springProfile name="stress">
-        <logger name="com.tzld.piaoquan.recommend.sort" level="info"/>
+        <logger name="com.tzld.piaoquan.recommend.server" level="info"/>
     </springProfile>
     <springProfile name="prod">
-        <logger name="com.tzld.piaoquan.recommend.sort" level="info"/>
+        <logger name="com.tzld.piaoquan.recommend.server" level="info"/>
     </springProfile>
 
     <root level="info">