├── spring_cloud_in_action
├── README.md
├── config-repo
│ ├── didispace-dev.properties
│ ├── didispace-prod.properties
│ ├── didispace-test.properties
│ ├── didispace.properties
│ └── api-gateway.properties
├── config-server-eureka
│ └── src
│ │ └── main
│ │ ├── resources
│ │ ├── didispace.properties
│ │ ├── didispace-dev.properties
│ │ ├── didispace-prod.properties
│ │ ├── didispace-test.properties
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── Application.java
├── config-server
│ └── src
│ │ └── main
│ │ ├── resources
│ │ ├── didispace-dev.properties
│ │ ├── didispace-prod.properties
│ │ ├── didispace-test.properties
│ │ ├── application.properties
│ │ ├── config-server.keystore
│ │ └── didispace.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── Application.java
├── config-server-eureka-kafka
│ └── src
│ │ └── main
│ │ ├── resources
│ │ ├── didispace.properties
│ │ ├── didispace-dev.properties
│ │ ├── didispace-prod.properties
│ │ ├── didispace-test.properties
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── Application.java
├── config-server-eureka-rabbit
│ └── src
│ │ └── main
│ │ ├── resources
│ │ ├── didispace.properties
│ │ ├── didispace-dev.properties
│ │ ├── didispace-prod.properties
│ │ ├── didispace-test.properties
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── Application.java
├── spring-boot-hello
│ └── src
│ │ └── main
│ │ ├── resources
│ │ ├── application-dev.properties
│ │ ├── application-prod.properties
│ │ ├── application-test.properties
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ ├── web
│ │ └── HelloController.java
│ │ └── HelloApplication.java
├── hystrix-dashboard
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── HystrixDashboardApplication.java
├── zipkin-server
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── ZipkinApplication.java
├── api-gateway
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ ├── HelloController.java
│ │ └── Application.java
├── consul-client-1
│ └── src
│ │ └── main
│ │ └── resources
│ │ └── application.properties
├── eureka-server
│ └── src
│ │ └── main
│ │ ├── resources
│ │ ├── application.properties
│ │ ├── application-peer1.properties
│ │ └── application-peer2.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── Application.java
├── feign-consumer
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ ├── web
│ │ ├── RefactorHelloService.java
│ │ ├── HelloService.java
│ │ ├── User.java
│ │ └── HelloServiceFallback.java
│ │ └── ConsumerApplication.java
├── hello-service
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ ├── HelloApplication.java
│ │ ├── web
│ │ ├── RefactorHelloController.java
│ │ └── User.java
│ │ └── indicator
│ │ └── RocketMQHealthIndicator.java
├── turbine-amqp
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── TurbineApplication.java
├── eureka-server-ha
│ └── src
│ │ └── main
│ │ ├── resources
│ │ ├── application-peer1.properties
│ │ ├── application-peer2.properties
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── Application.java
├── rabbitmq-hello
│ └── src
│ │ ├── main
│ │ ├── resources
│ │ │ └── application.properties
│ │ └── java
│ │ │ └── com
│ │ │ └── didispace
│ │ │ ├── HelloApplication.java
│ │ │ └── rabbit
│ │ │ ├── RabbitConfig.java
│ │ │ ├── Sender.java
│ │ │ └── Receiver.java
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── HelloApplicationTests.java
├── api-gateway-dynamic-route
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── bootstrap.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── Application.java
├── api-gateway-dynamic-filter
│ ├── src
│ │ └── main
│ │ │ ├── resources
│ │ │ └── application.properties
│ │ │ └── java
│ │ │ └── com
│ │ │ └── didispace
│ │ │ └── FilterConfiguration.java
│ └── filter
│ │ ├── pre
│ │ └── PreFilter.groovy
│ │ └── post
│ │ └── PostFilter.groovy
├── api-gateway-exception
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ ├── filter
│ │ ├── DidiErrorAttributes.java
│ │ ├── DidiFilterProcessor.java
│ │ ├── post
│ │ │ └── ThrowExceptionPostFilter.java
│ │ └── error
│ │ │ └── ErrorExtFilter.java
│ │ └── Application.java
├── trace-2
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── TraceApplication.java
├── diagram-uml
│ └── BusEndPoint.uml
├── config-client
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── bootstrap.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ ├── Application.java
│ │ └── web
│ │ └── TestController.java
├── turbine
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── TurbineApplication.java
├── ribbon-consumer
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ ├── web
│ │ ├── ConsumerController.java
│ │ └── User.java
│ │ └── ConsumerApplication.java
├── config-client-eureka
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── bootstrap.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ ├── Application.java
│ │ └── web
│ │ └── TestController.java
├── trace-1
│ └── src
│ │ └── main
│ │ └── resources
│ │ └── application.properties
├── zipkin-server-stream
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── ZipkinApplication.java
├── stream-producer
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── didispace
│ │ │ ├── HelloApplication.java
│ │ │ ├── User.java
│ │ │ └── SinkSender3.java
│ │ └── resources
│ │ └── application.properties
├── api-gateway-consul
│ ├── src
│ │ └── main
│ │ │ ├── resources
│ │ │ └── application.properties
│ │ │ └── java
│ │ │ └── com
│ │ │ └── didispace
│ │ │ └── Application.java
│ └── filter
│ │ ├── post
│ │ └── PostFilter.groovy
│ │ └── pre
│ │ └── PreFilter.groovy
├── trace-stream-1
│ └── src
│ │ └── main
│ │ └── resources
│ │ └── application.properties
├── trace-stream-2
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── TraceApplication.java
├── config-client-eureka-rabbit
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── bootstrap.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ ├── Application.java
│ │ └── web
│ │ └── TestController.java
├── stream-consumer
│ └── src
│ │ ├── main
│ │ └── java
│ │ │ └── com
│ │ │ └── didispace
│ │ │ ├── HelloApplication.java
│ │ │ ├── SinkReceiver1.java
│ │ │ ├── User.java
│ │ │ ├── SinkReceiver4.java
│ │ │ └── SinkReceiver2.java
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ ├── HelloApplicationTests2.java
│ │ ├── HelloApplicationTests3.java
│ │ └── HelloApplicationTests.java
├── config-client-eureka-kafka
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── didispace
│ │ │ ├── Application.java
│ │ │ └── web
│ │ │ └── TestController.java
│ │ └── resources
│ │ └── bootstrap.properties
├── zipkin-server-stream-mysql
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── didispace
│ │ │ └── ZipkinApplication.java
│ │ └── resources
│ │ └── application.properties
├── hello-service-api
│ ├── src
│ │ └── main
│ │ │ └── java
│ │ │ └── com
│ │ │ └── didispace
│ │ │ ├── service
│ │ │ └── HelloService.java
│ │ │ └── dto
│ │ │ └── User.java
│ └── pom.xml
└── stream-hello
│ └── src
│ └── main
│ └── java
│ └── com
│ └── didispace
│ └── aggregate
│ └── Sink
│ └── SinkApplication.java
├── Chapter1-1-4
├── config-repo
│ ├── didispace-dev.properties
│ ├── didispace-prod.properties
│ ├── didispace-test.properties
│ └── didispace.properties
├── config-server
│ └── src
│ │ └── main
│ │ ├── resources
│ │ ├── didispace.properties
│ │ ├── didispace-dev.properties
│ │ ├── didispace-prod.properties
│ │ ├── didispace-test.properties
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── Application.java
└── config-client
│ └── src
│ └── main
│ ├── resources
│ └── bootstrap.properties
│ └── java
│ └── com
│ └── didispace
│ ├── Application.java
│ └── web
│ └── TestController.java
├── Chapter1-1-7
├── config-repo
│ ├── didispace-dev.properties
│ ├── didispace-prod.properties
│ ├── didispace-test.properties
│ └── didispace.properties
├── config-server-eureka
│ └── src
│ │ └── main
│ │ ├── resources
│ │ ├── didispace.properties
│ │ ├── didispace-dev.properties
│ │ ├── didispace-prod.properties
│ │ ├── didispace-test.properties
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── Application.java
├── config-server-eureka-kafka
│ └── src
│ │ └── main
│ │ ├── resources
│ │ ├── didispace.properties
│ │ ├── didispace-dev.properties
│ │ ├── didispace-prod.properties
│ │ ├── didispace-test.properties
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── Application.java
├── config-client-eureka
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── bootstrap.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ ├── Application.java
│ │ └── web
│ │ └── TestController.java
└── config-client-eureka-kafka
│ └── src
│ └── main
│ ├── java
│ └── com
│ │ └── didispace
│ │ ├── Application.java
│ │ └── web
│ │ └── TestController.java
│ └── resources
│ └── bootstrap.properties
├── Chapter1-1-8
├── config-repo
│ ├── didispace-dev.properties
│ ├── didispace-prod.properties
│ ├── didispace-test.properties
│ └── didispace.properties
├── config-server-eureka
│ └── src
│ │ └── main
│ │ ├── resources
│ │ ├── didispace.properties
│ │ ├── didispace-dev.properties
│ │ ├── didispace-prod.properties
│ │ ├── didispace-test.properties
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── Application.java
└── config-client-eureka
│ └── src
│ └── main
│ ├── resources
│ └── bootstrap.properties
│ └── java
│ └── com
│ └── didispace
│ ├── Application.java
│ └── web
│ └── TestController.java
├── 1-Brixton版教程示例
├── Chapter1-1-4
│ ├── config-repo
│ │ ├── didispace-dev.properties
│ │ ├── didispace-prod.properties
│ │ ├── didispace-test.properties
│ │ └── didispace.properties
│ ├── config-server
│ │ └── src
│ │ │ └── main
│ │ │ ├── resources
│ │ │ ├── didispace.properties
│ │ │ ├── didispace-dev.properties
│ │ │ ├── didispace-prod.properties
│ │ │ ├── didispace-test.properties
│ │ │ └── application.properties
│ │ │ └── java
│ │ │ └── com
│ │ │ └── didispace
│ │ │ └── Application.java
│ └── config-client
│ │ └── src
│ │ └── main
│ │ ├── resources
│ │ └── bootstrap.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ ├── Application.java
│ │ └── web
│ │ └── TestController.java
├── Chapter1-1-7
│ ├── config-repo
│ │ ├── didispace-dev.properties
│ │ ├── didispace-prod.properties
│ │ ├── didispace-test.properties
│ │ └── didispace.properties
│ ├── config-server-eureka
│ │ └── src
│ │ │ └── main
│ │ │ ├── resources
│ │ │ ├── didispace.properties
│ │ │ ├── didispace-dev.properties
│ │ │ ├── didispace-prod.properties
│ │ │ ├── didispace-test.properties
│ │ │ └── application.properties
│ │ │ └── java
│ │ │ └── com
│ │ │ └── didispace
│ │ │ └── Application.java
│ ├── config-server-eureka-kafka
│ │ └── src
│ │ │ └── main
│ │ │ ├── resources
│ │ │ ├── didispace.properties
│ │ │ ├── didispace-dev.properties
│ │ │ ├── didispace-prod.properties
│ │ │ ├── didispace-test.properties
│ │ │ └── application.properties
│ │ │ └── java
│ │ │ └── com
│ │ │ └── didispace
│ │ │ └── Application.java
│ ├── config-client-eureka
│ │ └── src
│ │ │ └── main
│ │ │ ├── resources
│ │ │ └── bootstrap.properties
│ │ │ └── java
│ │ │ └── com
│ │ │ └── didispace
│ │ │ ├── Application.java
│ │ │ └── web
│ │ │ └── TestController.java
│ └── config-client-eureka-kafka
│ │ └── src
│ │ └── main
│ │ ├── java
│ │ └── com
│ │ │ └── didispace
│ │ │ ├── Application.java
│ │ │ └── web
│ │ │ └── TestController.java
│ │ └── resources
│ │ └── bootstrap.properties
├── Chapter1-1-8
│ ├── config-repo
│ │ ├── didispace-dev.properties
│ │ ├── didispace-prod.properties
│ │ ├── didispace-test.properties
│ │ └── didispace.properties
│ ├── config-server-eureka
│ │ └── src
│ │ │ └── main
│ │ │ ├── resources
│ │ │ ├── didispace.properties
│ │ │ ├── didispace-dev.properties
│ │ │ ├── didispace-prod.properties
│ │ │ ├── didispace-test.properties
│ │ │ └── application.properties
│ │ │ └── java
│ │ │ └── com
│ │ │ └── didispace
│ │ │ └── Application.java
│ └── config-client-eureka
│ │ └── src
│ │ └── main
│ │ ├── resources
│ │ └── bootstrap.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ ├── Application.java
│ │ └── web
│ │ └── TestController.java
├── Chapter1-1-2
│ ├── eureka-feign
│ │ └── src
│ │ │ └── main
│ │ │ ├── resources
│ │ │ └── application.properties
│ │ │ └── java
│ │ │ └── com
│ │ │ └── didispace
│ │ │ ├── FeignApplication.java
│ │ │ ├── service
│ │ │ └── ComputeClient.java
│ │ │ └── web
│ │ │ └── ConsumerController.java
│ └── eureka-ribbon
│ │ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ ├── web
│ │ └── ConsumerController.java
│ │ └── RibbonApplication.java
├── Chapter1-1-5
│ ├── service-A
│ │ └── src
│ │ │ └── main
│ │ │ ├── resources
│ │ │ └── application.properties
│ │ │ └── java
│ │ │ └── com
│ │ │ └── didispace
│ │ │ ├── ComputeServiceApplication.java
│ │ │ └── web
│ │ │ └── ComputeController.java
│ ├── service-B
│ │ └── src
│ │ │ ├── main
│ │ │ ├── resources
│ │ │ │ └── application.properties
│ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── didispace
│ │ │ │ ├── ComputeServiceApplication.java
│ │ │ │ └── web
│ │ │ │ └── ComputeController.java
│ │ │ └── test
│ │ │ └── java
│ │ │ └── com
│ │ │ └── didispace
│ │ │ └── ApplicationTests.java
│ ├── eureka-server
│ │ └── src
│ │ │ └── main
│ │ │ ├── resources
│ │ │ └── application.properties
│ │ │ └── java
│ │ │ └── com
│ │ │ └── didispace
│ │ │ └── Application.java
│ └── api-gateway
│ │ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── Application.java
├── Chapter1-1-1
│ ├── compute-service
│ │ └── src
│ │ │ └── main
│ │ │ ├── resources
│ │ │ └── application.properties
│ │ │ └── java
│ │ │ └── com
│ │ │ └── didispace
│ │ │ ├── ComputeServiceApplication.java
│ │ │ └── web
│ │ │ └── ComputeController.java
│ └── eureka-server
│ │ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── Application.java
├── Chapter1-1-3
│ ├── compute-service
│ │ └── src
│ │ │ └── main
│ │ │ ├── resources
│ │ │ └── application.properties
│ │ │ └── java
│ │ │ └── com
│ │ │ └── didispace
│ │ │ ├── ComputeServiceApplication.java
│ │ │ └── web
│ │ │ └── ComputeController.java
│ ├── eureka-server
│ │ └── src
│ │ │ └── main
│ │ │ ├── resources
│ │ │ └── application.properties
│ │ │ └── java
│ │ │ └── com
│ │ │ └── didispace
│ │ │ └── Application.java
│ ├── eureka-feign
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ └── com
│ │ │ └── didispace
│ │ │ ├── service
│ │ │ ├── ComputeClientHystrix.java
│ │ │ └── ComputeClient.java
│ │ │ ├── FeignApplication.java
│ │ │ └── web
│ │ │ └── ConsumerController.java
│ └── eureka-ribbon
│ │ └── src
│ │ └── main
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ ├── service
│ │ └── ComputeService.java
│ │ ├── web
│ │ └── ConsumerController.java
│ │ └── RibbonApplication.java
└── Chapter1-1-6
│ ├── compute-service
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ ├── ComputeServiceApplication.java
│ │ └── web
│ │ └── ComputeController.java
│ └── eureka-server
│ └── src
│ └── main
│ ├── resources
│ ├── application-peer1.properties
│ └── application-peer2.properties
│ └── java
│ └── com
│ └── didispace
│ └── Application.java
├── 2-Dalston版教程示例
├── hystrix-dashboard
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── HystrixDashboardApplication.java
├── consul-client
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ ├── Application.java
│ │ └── DcController.java
├── eureka-client
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ ├── Application.java
│ │ └── DcController.java
├── eureka-server
│ └── src
│ │ └── main
│ │ ├── resources
│ │ ├── application.properties
│ │ ├── application-peer1.properties
│ │ └── application-peer2.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── Application.java
├── eureka-feign-client
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── api
│ │ └── impl
│ │ └── Application.java
├── eureka-feign-consumer
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── api
│ │ └── consumer
│ │ └── Application.java
├── turbine-amqp
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── TurbineApplication.java
├── hystrix-collapser-consumer
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── Application.java
├── hystrix-collapser-provider
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── Application.java
├── consul-consumer
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ ├── Application.java
│ │ └── DcController.java
├── eureka-consumer
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ ├── Application.java
│ │ └── DcController.java
├── eureka-consumer-feign
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ ├── DcClient.java
│ │ ├── DcController.java
│ │ └── Application.java
├── eureka-consumer-ribbon
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ ├── DcController.java
│ │ └── Application.java
├── config-client
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── bootstrap.yml
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── Application.java
├── eureka-consumer-ribbon-hystrix
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── Application.java
├── eureka-consumer-feign-hystrix
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ ├── DcClientFallback.java
│ │ ├── DcClient.java
│ │ ├── DcController.java
│ │ └── Application.java
├── turbine
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── TurbineApplication.java
├── api-gateway-with-eureka
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.yaml
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── Application.java
├── config-server-git
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.yml
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── Application.java
├── api-gateway
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.yaml
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── Application.java
└── eureka-feign-api
│ └── src
│ └── main
│ └── java
│ └── com
│ └── didispace
│ └── api
│ └── HelloService.java
├── .gitignore
├── Chapter1-1-2
├── eureka-feign
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ ├── FeignApplication.java
│ │ ├── service
│ │ └── ComputeClient.java
│ │ └── web
│ │ └── ConsumerController.java
└── eureka-ribbon
│ └── src
│ └── main
│ ├── resources
│ └── application.properties
│ └── java
│ └── com
│ └── didispace
│ ├── web
│ └── ConsumerController.java
│ └── RibbonApplication.java
├── Chapter1-1-5
├── service-A
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ ├── ComputeServiceApplication.java
│ │ └── web
│ │ └── ComputeController.java
├── service-B
│ └── src
│ │ ├── main
│ │ ├── resources
│ │ │ └── application.properties
│ │ └── java
│ │ │ └── com
│ │ │ └── didispace
│ │ │ ├── ComputeServiceApplication.java
│ │ │ └── web
│ │ │ └── ComputeController.java
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── ApplicationTests.java
├── eureka-server
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── Application.java
└── api-gateway
│ └── src
│ └── main
│ ├── resources
│ └── application.properties
│ └── java
│ └── com
│ └── didispace
│ └── Application.java
├── Chapter1-1-1
├── compute-service
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ ├── ComputeServiceApplication.java
│ │ └── web
│ │ └── ComputeController.java
└── eureka-server
│ └── src
│ └── main
│ ├── resources
│ └── application.properties
│ └── java
│ └── com
│ └── didispace
│ └── Application.java
├── Chapter1-1-3
├── compute-service
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ ├── ComputeServiceApplication.java
│ │ └── web
│ │ └── ComputeController.java
├── eureka-server
│ └── src
│ │ └── main
│ │ ├── resources
│ │ └── application.properties
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ └── Application.java
├── eureka-feign
│ └── src
│ │ └── main
│ │ └── java
│ │ └── com
│ │ └── didispace
│ │ ├── service
│ │ ├── ComputeClientHystrix.java
│ │ └── ComputeClient.java
│ │ ├── FeignApplication.java
│ │ └── web
│ │ └── ConsumerController.java
└── eureka-ribbon
│ └── src
│ └── main
│ └── java
│ └── com
│ └── didispace
│ ├── service
│ └── ComputeService.java
│ ├── web
│ └── ConsumerController.java
│ └── RibbonApplication.java
└── Chapter1-1-6
├── compute-service
└── src
│ └── main
│ ├── resources
│ └── application.properties
│ └── java
│ └── com
│ └── didispace
│ ├── ComputeServiceApplication.java
│ └── web
│ └── ComputeController.java
└── eureka-server
└── src
└── main
├── resources
├── application-peer1.properties
└── application-peer2.properties
└── java
└── com
└── didispace
└── Application.java
/spring_cloud_in_action/README.md:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter1-1-4/config-repo/didispace-dev.properties:
--------------------------------------------------------------------------------
1 | from=git-dev-1.0
--------------------------------------------------------------------------------
/Chapter1-1-4/config-repo/didispace-prod.properties:
--------------------------------------------------------------------------------
1 | from=git-prod-1.0
--------------------------------------------------------------------------------
/Chapter1-1-4/config-repo/didispace-test.properties:
--------------------------------------------------------------------------------
1 | from=git-test-1.0
--------------------------------------------------------------------------------
/Chapter1-1-7/config-repo/didispace-dev.properties:
--------------------------------------------------------------------------------
1 | from=git-dev-3.0
--------------------------------------------------------------------------------
/Chapter1-1-7/config-repo/didispace-prod.properties:
--------------------------------------------------------------------------------
1 | from=git-prod-1.0
--------------------------------------------------------------------------------
/Chapter1-1-7/config-repo/didispace-test.properties:
--------------------------------------------------------------------------------
1 | from=git-test-1.0
--------------------------------------------------------------------------------
/Chapter1-1-8/config-repo/didispace-dev.properties:
--------------------------------------------------------------------------------
1 | from=git-dev-1.0
--------------------------------------------------------------------------------
/Chapter1-1-8/config-repo/didispace-prod.properties:
--------------------------------------------------------------------------------
1 | from=git-prod-1.0
--------------------------------------------------------------------------------
/Chapter1-1-8/config-repo/didispace-test.properties:
--------------------------------------------------------------------------------
1 | from=git-test-1.0
--------------------------------------------------------------------------------
/Chapter1-1-4/config-repo/didispace.properties:
--------------------------------------------------------------------------------
1 | from=git-default-1.0
2 |
--------------------------------------------------------------------------------
/Chapter1-1-7/config-repo/didispace.properties:
--------------------------------------------------------------------------------
1 | from=git-default-1.0
2 |
--------------------------------------------------------------------------------
/Chapter1-1-8/config-repo/didispace.properties:
--------------------------------------------------------------------------------
1 | from=git-default-1.0
2 |
--------------------------------------------------------------------------------
/Chapter1-1-4/config-server/src/main/resources/didispace.properties:
--------------------------------------------------------------------------------
1 | from=local
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-repo/didispace-dev.properties:
--------------------------------------------------------------------------------
1 | from=git-dev-3.1
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-repo/didispace-prod.properties:
--------------------------------------------------------------------------------
1 | from=git-prod-1.0
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-repo/didispace-test.properties:
--------------------------------------------------------------------------------
1 | from=git-test-1.0
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-4/config-repo/didispace-dev.properties:
--------------------------------------------------------------------------------
1 | from=git-dev-1.0
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-4/config-repo/didispace-prod.properties:
--------------------------------------------------------------------------------
1 | from=git-prod-1.0
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-4/config-repo/didispace-test.properties:
--------------------------------------------------------------------------------
1 | from=git-test-1.0
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-7/config-repo/didispace-dev.properties:
--------------------------------------------------------------------------------
1 | from=git-dev-3.0
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-7/config-repo/didispace-prod.properties:
--------------------------------------------------------------------------------
1 | from=git-prod-1.0
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-7/config-repo/didispace-test.properties:
--------------------------------------------------------------------------------
1 | from=git-test-1.0
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-8/config-repo/didispace-dev.properties:
--------------------------------------------------------------------------------
1 | from=git-dev-1.0
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-8/config-repo/didispace-prod.properties:
--------------------------------------------------------------------------------
1 | from=git-prod-1.0
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-8/config-repo/didispace-test.properties:
--------------------------------------------------------------------------------
1 | from=git-test-1.0
--------------------------------------------------------------------------------
/Chapter1-1-7/config-server-eureka/src/main/resources/didispace.properties:
--------------------------------------------------------------------------------
1 | from=local
--------------------------------------------------------------------------------
/Chapter1-1-8/config-server-eureka/src/main/resources/didispace.properties:
--------------------------------------------------------------------------------
1 | from=local
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-repo/didispace.properties:
--------------------------------------------------------------------------------
1 | from=git-default-1.0
2 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-4/config-repo/didispace.properties:
--------------------------------------------------------------------------------
1 | from=git-default-1.0
2 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-7/config-repo/didispace.properties:
--------------------------------------------------------------------------------
1 | from=git-default-1.0
2 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-8/config-repo/didispace.properties:
--------------------------------------------------------------------------------
1 | from=git-default-1.0
2 |
--------------------------------------------------------------------------------
/Chapter1-1-4/config-server/src/main/resources/didispace-dev.properties:
--------------------------------------------------------------------------------
1 | from=local-dev
--------------------------------------------------------------------------------
/Chapter1-1-4/config-server/src/main/resources/didispace-prod.properties:
--------------------------------------------------------------------------------
1 | from=local-prod
--------------------------------------------------------------------------------
/Chapter1-1-4/config-server/src/main/resources/didispace-test.properties:
--------------------------------------------------------------------------------
1 | from=local-test
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-4/config-server/src/main/resources/didispace.properties:
--------------------------------------------------------------------------------
1 | from=local
--------------------------------------------------------------------------------
/Chapter1-1-7/config-server-eureka-kafka/src/main/resources/didispace.properties:
--------------------------------------------------------------------------------
1 | from=local
--------------------------------------------------------------------------------
/Chapter1-1-7/config-server-eureka/src/main/resources/didispace-dev.properties:
--------------------------------------------------------------------------------
1 | from=local-dev
--------------------------------------------------------------------------------
/Chapter1-1-7/config-server-eureka/src/main/resources/didispace-prod.properties:
--------------------------------------------------------------------------------
1 | from=local-prod
--------------------------------------------------------------------------------
/Chapter1-1-7/config-server-eureka/src/main/resources/didispace-test.properties:
--------------------------------------------------------------------------------
1 | from=local-test
--------------------------------------------------------------------------------
/Chapter1-1-8/config-server-eureka/src/main/resources/didispace-dev.properties:
--------------------------------------------------------------------------------
1 | from=local-dev
--------------------------------------------------------------------------------
/Chapter1-1-8/config-server-eureka/src/main/resources/didispace-prod.properties:
--------------------------------------------------------------------------------
1 | from=local-prod
--------------------------------------------------------------------------------
/Chapter1-1-8/config-server-eureka/src/main/resources/didispace-test.properties:
--------------------------------------------------------------------------------
1 | from=local-test
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-server-eureka/src/main/resources/didispace.properties:
--------------------------------------------------------------------------------
1 | from=local
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-7/config-server-eureka/src/main/resources/didispace.properties:
--------------------------------------------------------------------------------
1 | from=local
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-8/config-server-eureka/src/main/resources/didispace.properties:
--------------------------------------------------------------------------------
1 | from=local
--------------------------------------------------------------------------------
/Chapter1-1-7/config-server-eureka-kafka/src/main/resources/didispace-dev.properties:
--------------------------------------------------------------------------------
1 | from=local-dev
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-server/src/main/resources/didispace-dev.properties:
--------------------------------------------------------------------------------
1 | from=local-dev
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-server/src/main/resources/didispace-prod.properties:
--------------------------------------------------------------------------------
1 | from=local-prod
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-server/src/main/resources/didispace-test.properties:
--------------------------------------------------------------------------------
1 | from=local-test
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-4/config-server/src/main/resources/didispace-dev.properties:
--------------------------------------------------------------------------------
1 | from=local-dev
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-4/config-server/src/main/resources/didispace-prod.properties:
--------------------------------------------------------------------------------
1 | from=local-prod
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-4/config-server/src/main/resources/didispace-test.properties:
--------------------------------------------------------------------------------
1 | from=local-test
--------------------------------------------------------------------------------
/Chapter1-1-7/config-server-eureka-kafka/src/main/resources/didispace-prod.properties:
--------------------------------------------------------------------------------
1 | from=local-prod
--------------------------------------------------------------------------------
/Chapter1-1-7/config-server-eureka-kafka/src/main/resources/didispace-test.properties:
--------------------------------------------------------------------------------
1 | from=local-test
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-server-eureka-kafka/src/main/resources/didispace.properties:
--------------------------------------------------------------------------------
1 | from=local
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-server-eureka-rabbit/src/main/resources/didispace.properties:
--------------------------------------------------------------------------------
1 | from=local
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-server-eureka/src/main/resources/didispace-dev.properties:
--------------------------------------------------------------------------------
1 | from=local-dev
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-server-eureka/src/main/resources/didispace-prod.properties:
--------------------------------------------------------------------------------
1 | from=local-prod
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-server-eureka/src/main/resources/didispace-test.properties:
--------------------------------------------------------------------------------
1 | from=local-test
--------------------------------------------------------------------------------
/spring_cloud_in_action/spring-boot-hello/src/main/resources/application-dev.properties:
--------------------------------------------------------------------------------
1 | server.port=8881
--------------------------------------------------------------------------------
/spring_cloud_in_action/spring-boot-hello/src/main/resources/application-prod.properties:
--------------------------------------------------------------------------------
1 | server.port=8883
--------------------------------------------------------------------------------
/spring_cloud_in_action/spring-boot-hello/src/main/resources/application-test.properties:
--------------------------------------------------------------------------------
1 | server.port=8882
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-7/config-server-eureka-kafka/src/main/resources/didispace.properties:
--------------------------------------------------------------------------------
1 | from=local
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-7/config-server-eureka/src/main/resources/didispace-dev.properties:
--------------------------------------------------------------------------------
1 | from=local-dev
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-7/config-server-eureka/src/main/resources/didispace-prod.properties:
--------------------------------------------------------------------------------
1 | from=local-prod
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-7/config-server-eureka/src/main/resources/didispace-test.properties:
--------------------------------------------------------------------------------
1 | from=local-test
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-8/config-server-eureka/src/main/resources/didispace-dev.properties:
--------------------------------------------------------------------------------
1 | from=local-dev
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-8/config-server-eureka/src/main/resources/didispace-prod.properties:
--------------------------------------------------------------------------------
1 | from=local-prod
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-8/config-server-eureka/src/main/resources/didispace-test.properties:
--------------------------------------------------------------------------------
1 | from=local-test
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-server-eureka-kafka/src/main/resources/didispace-dev.properties:
--------------------------------------------------------------------------------
1 | from=local-dev
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-server-eureka-rabbit/src/main/resources/didispace-dev.properties:
--------------------------------------------------------------------------------
1 | from=local-dev
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-7/config-server-eureka-kafka/src/main/resources/didispace-dev.properties:
--------------------------------------------------------------------------------
1 | from=local-dev
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-server-eureka-kafka/src/main/resources/didispace-prod.properties:
--------------------------------------------------------------------------------
1 | from=local-prod
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-server-eureka-kafka/src/main/resources/didispace-test.properties:
--------------------------------------------------------------------------------
1 | from=local-test
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-server-eureka-rabbit/src/main/resources/didispace-prod.properties:
--------------------------------------------------------------------------------
1 | from=local-prod
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-server-eureka-rabbit/src/main/resources/didispace-test.properties:
--------------------------------------------------------------------------------
1 | from=local-test
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-7/config-server-eureka-kafka/src/main/resources/didispace-prod.properties:
--------------------------------------------------------------------------------
1 | from=local-prod
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-7/config-server-eureka-kafka/src/main/resources/didispace-test.properties:
--------------------------------------------------------------------------------
1 | from=local-test
--------------------------------------------------------------------------------
/2-Dalston版教程示例/hystrix-dashboard/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=hystrix-dashboard
2 | server.port=1301
--------------------------------------------------------------------------------
/spring_cloud_in_action/hystrix-dashboard/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=hystrix-dashboard
2 | server.port=2001
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-repo/api-gateway.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SpringForAll/SpringCloud-Learning/HEAD/spring_cloud_in_action/config-repo/api-gateway.properties
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.class
2 |
3 | # Package Files #
4 | *.jar
5 | *.war
6 | *.ear
7 |
8 | # idea Files
9 | .idea
10 | *.iml
11 | target
12 |
13 | # log Files
14 | *.log
15 |
16 |
--------------------------------------------------------------------------------
/Chapter1-1-4/config-server/src/main/resources/application.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SpringForAll/SpringCloud-Learning/HEAD/Chapter1-1-4/config-server/src/main/resources/application.properties
--------------------------------------------------------------------------------
/2-Dalston版教程示例/consul-client/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=consul-client
2 | server.port=2001
3 |
4 | spring.cloud.consul.host=localhost
5 | spring.cloud.consul.port=8500
6 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/eureka-client/src/main/resources/application.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SpringForAll/SpringCloud-Learning/HEAD/2-Dalston版教程示例/eureka-client/src/main/resources/application.properties
--------------------------------------------------------------------------------
/2-Dalston版教程示例/eureka-server/src/main/resources/application.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SpringForAll/SpringCloud-Learning/HEAD/2-Dalston版教程示例/eureka-server/src/main/resources/application.properties
--------------------------------------------------------------------------------
/Chapter1-1-2/eureka-feign/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=feign-consumer
2 | server.port=3333
3 |
4 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
5 |
6 |
--------------------------------------------------------------------------------
/Chapter1-1-5/service-A/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=service-A
2 |
3 | server.port=2222
4 |
5 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
6 |
7 |
--------------------------------------------------------------------------------
/Chapter1-1-5/service-B/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=service-B
2 |
3 | server.port=3333
4 |
5 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
6 |
7 |
--------------------------------------------------------------------------------
/Chapter1-1-2/eureka-ribbon/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=ribbon-consumer
2 | server.port=3333
3 |
4 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
5 |
6 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/zipkin-server/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=zipkin-server
2 | server.port=9411
3 |
4 | #eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
5 |
--------------------------------------------------------------------------------
/Chapter1-1-1/compute-service/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=compute-service
2 |
3 | server.port=2222
4 |
5 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
6 |
7 |
--------------------------------------------------------------------------------
/Chapter1-1-3/compute-service/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=compute-service
2 |
3 | server.port=2222
4 |
5 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
6 |
7 |
--------------------------------------------------------------------------------
/Chapter1-1-7/config-server-eureka/src/main/resources/application.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SpringForAll/SpringCloud-Learning/HEAD/Chapter1-1-7/config-server-eureka/src/main/resources/application.properties
--------------------------------------------------------------------------------
/spring_cloud_in_action/api-gateway/src/main/resources/application.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SpringForAll/SpringCloud-Learning/HEAD/spring_cloud_in_action/api-gateway/src/main/resources/application.properties
--------------------------------------------------------------------------------
/spring_cloud_in_action/consul-client-1/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=consul-client-1
2 | server.port=3101
3 |
4 | spring.cloud.consul.host=localhost
5 | spring.cloud.consul.port=8500
6 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-2/eureka-feign/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=feign-consumer
2 | server.port=3333
3 |
4 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
5 |
6 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-5/service-A/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=service-A
2 |
3 | server.port=2222
4 |
5 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
6 |
7 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-5/service-B/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=service-B
2 |
3 | server.port=3333
4 |
5 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
6 |
7 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/eureka-feign-client/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=eureka-feign-client
2 | server.port=2101
3 |
4 | eureka.client.serviceUrl.defaultZone=http://eureka.didispace.com/eureka/
5 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-server/src/main/resources/application.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SpringForAll/SpringCloud-Learning/HEAD/spring_cloud_in_action/config-server/src/main/resources/application.properties
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-server/src/main/resources/config-server.keystore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SpringForAll/SpringCloud-Learning/HEAD/spring_cloud_in_action/config-server/src/main/resources/config-server.keystore
--------------------------------------------------------------------------------
/spring_cloud_in_action/eureka-server/src/main/resources/application.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SpringForAll/SpringCloud-Learning/HEAD/spring_cloud_in_action/eureka-server/src/main/resources/application.properties
--------------------------------------------------------------------------------
/spring_cloud_in_action/feign-consumer/src/main/resources/application.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SpringForAll/SpringCloud-Learning/HEAD/spring_cloud_in_action/feign-consumer/src/main/resources/application.properties
--------------------------------------------------------------------------------
/spring_cloud_in_action/hello-service/src/main/resources/application.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SpringForAll/SpringCloud-Learning/HEAD/spring_cloud_in_action/hello-service/src/main/resources/application.properties
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-2/eureka-ribbon/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=ribbon-consumer
2 | server.port=3333
3 |
4 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
5 |
6 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/eureka-feign-consumer/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=eureka-feign-consumer
2 | server.port=2102
3 |
4 | eureka.client.serviceUrl.defaultZone=http://eureka.didispace.com/eureka/
5 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/turbine-amqp/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=turbine-amqp
2 |
3 | server.port=8989
4 | management.port=8990
5 |
6 | eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/
--------------------------------------------------------------------------------
/Chapter1-1-6/compute-service/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=compute-service
2 |
3 | server.port=2222
4 |
5 | eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/,http://peer2:1112/eureka/
--------------------------------------------------------------------------------
/Chapter1-1-7/config-server-eureka-kafka/src/main/resources/application.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SpringForAll/SpringCloud-Learning/HEAD/Chapter1-1-7/config-server-eureka-kafka/src/main/resources/application.properties
--------------------------------------------------------------------------------
/spring_cloud_in_action/spring-boot-hello/src/main/resources/application.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SpringForAll/SpringCloud-Learning/HEAD/spring_cloud_in_action/spring-boot-hello/src/main/resources/application.properties
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-1/compute-service/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=compute-service
2 |
3 | server.port=2222
4 |
5 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
6 |
7 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-3/compute-service/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=compute-service
2 |
3 | server.port=2222
4 |
5 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
6 |
7 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-4/config-server/src/main/resources/application.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SpringForAll/SpringCloud-Learning/HEAD/1-Brixton版教程示例/Chapter1-1-4/config-server/src/main/resources/application.properties
--------------------------------------------------------------------------------
/Chapter1-1-6/eureka-server/src/main/resources/application-peer1.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=eureka-server
2 | server.port=1111
3 | eureka.instance.hostname=peer1
4 |
5 | eureka.client.serviceUrl.defaultZone=http://peer2:1112/eureka/
--------------------------------------------------------------------------------
/Chapter1-1-6/eureka-server/src/main/resources/application-peer2.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=eureka-server
2 | server.port=1112
3 | eureka.instance.hostname=peer2
4 |
5 | eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/
--------------------------------------------------------------------------------
/spring_cloud_in_action/turbine-amqp/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=turbine-amqp
2 |
3 | server.port=7989
4 | management.port=7990
5 |
6 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-6/compute-service/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=compute-service
2 |
3 | server.port=2222
4 |
5 | eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/,http://peer2:1112/eureka/
--------------------------------------------------------------------------------
/2-Dalston版教程示例/hystrix-collapser-consumer/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=hystrix-collapser-consumer
2 | server.port=2002
3 |
4 | eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/
5 |
6 |
7 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/hystrix-collapser-provider/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=hystrix-collapser-provider
2 | server.port=2001
3 |
4 | eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/
5 |
6 |
7 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-7/config-server-eureka/src/main/resources/application.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SpringForAll/SpringCloud-Learning/HEAD/1-Brixton版教程示例/Chapter1-1-7/config-server-eureka/src/main/resources/application.properties
--------------------------------------------------------------------------------
/Chapter1-1-4/config-client/src/main/resources/bootstrap.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=didispace
2 | spring.cloud.config.profile=dev
3 | spring.cloud.config.uri=http://localhost:7001/
4 |
5 | server.port=7002
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-server-eureka-kafka/src/main/resources/application.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SpringForAll/SpringCloud-Learning/HEAD/spring_cloud_in_action/config-server-eureka-kafka/src/main/resources/application.properties
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-server-eureka-rabbit/src/main/resources/application.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SpringForAll/SpringCloud-Learning/HEAD/spring_cloud_in_action/config-server-eureka-rabbit/src/main/resources/application.properties
--------------------------------------------------------------------------------
/spring_cloud_in_action/eureka-server-ha/src/main/resources/application-peer1.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=eureka-server
2 | server.port=1111
3 | eureka.instance.hostname=peer1
4 |
5 | eureka.client.serviceUrl.defaultZone=http://peer2:1112/eureka/
--------------------------------------------------------------------------------
/spring_cloud_in_action/eureka-server-ha/src/main/resources/application-peer2.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=eureka-server
2 | server.port=1112
3 | eureka.instance.hostname=peer2
4 |
5 | eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/
--------------------------------------------------------------------------------
/spring_cloud_in_action/eureka-server/src/main/resources/application-peer1.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=eureka-server
2 | server.port=1111
3 | eureka.instance.hostname=peer1
4 |
5 | eureka.client.serviceUrl.defaultZone=http://peer2:1112/eureka/
--------------------------------------------------------------------------------
/spring_cloud_in_action/eureka-server/src/main/resources/application-peer2.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=eureka-server
2 | server.port=1112
3 | eureka.instance.hostname=peer2
4 |
5 | eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-6/eureka-server/src/main/resources/application-peer1.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=eureka-server
2 | server.port=1111
3 | eureka.instance.hostname=peer1
4 |
5 | eureka.client.serviceUrl.defaultZone=http://peer2:1112/eureka/
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-6/eureka-server/src/main/resources/application-peer2.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=eureka-server
2 | server.port=1112
3 | eureka.instance.hostname=peer2
4 |
5 | eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-7/config-server-eureka-kafka/src/main/resources/application.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SpringForAll/SpringCloud-Learning/HEAD/1-Brixton版教程示例/Chapter1-1-7/config-server-eureka-kafka/src/main/resources/application.properties
--------------------------------------------------------------------------------
/2-Dalston版教程示例/eureka-server/src/main/resources/application-peer1.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=eureka-server
2 | server.port=1001
3 |
4 | eureka.instance.hostname=peer1
5 | eureka.client.serviceUrl.defaultZone=http://peer2:1002/eureka/
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/eureka-server/src/main/resources/application-peer2.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=eureka-server
2 | server.port=1002
3 |
4 | eureka.instance.hostname=peer2
5 | eureka.client.serviceUrl.defaultZone=http://peer1:1001/eureka/
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-4/config-client/src/main/resources/bootstrap.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=didispace
2 | spring.cloud.config.profile=dev
3 | spring.cloud.config.uri=http://localhost:7001/
4 |
5 | server.port=7002
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/consul-consumer/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=consul-consumer
2 | server.port=2101
3 |
4 | spring.cloud.consul.host=localhost
5 | spring.cloud.consul.port=8500
6 |
7 | logging.file=${spring.application.name}.log
8 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/eureka-consumer/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=eureka-consumer
2 | server.port=2101
3 |
4 | eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/
5 |
6 | logging.file=${spring.application.name}.log
7 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/eureka-consumer-feign/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=eureka-consumer
2 | server.port=2101
3 |
4 | eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/
5 |
6 | logging.file=${spring.application.name}.log
7 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/eureka-consumer-ribbon/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=eureka-consumer
2 | server.port=2101
3 |
4 | eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/
5 |
6 | logging.file=${spring.application.name}.log
7 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/rabbitmq-hello/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=rabbitmq-hello
2 |
3 | spring.rabbitmq.host=localhost
4 | spring.rabbitmq.port=5672
5 | spring.rabbitmq.username=springcloud
6 | spring.rabbitmq.password=123456
7 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/config-client/src/main/resources/bootstrap.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | application:
3 | name: config-client
4 | cloud:
5 | config:
6 | uri: http://localhost:1201/
7 | profile: default
8 | label: master
9 |
10 | server:
11 | port: 2001
12 |
13 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/eureka-consumer-ribbon-hystrix/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=eureka-consumer-ribbon-hystrix
2 | server.port=2101
3 |
4 | eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/
5 |
6 | logging.file=${spring.application.name}.log
7 |
--------------------------------------------------------------------------------
/Chapter1-1-1/eureka-server/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | server.port=1111
2 | #eureka.instance.hostname=localhost
3 |
4 | eureka.client.register-with-eureka=false
5 | eureka.client.fetch-registry=false
6 | eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
--------------------------------------------------------------------------------
/Chapter1-1-3/eureka-server/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | server.port=1111
2 | #eureka.instance.hostname=localhost
3 |
4 | eureka.client.register-with-eureka=false
5 | eureka.client.fetch-registry=false
6 | eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
--------------------------------------------------------------------------------
/Chapter1-1-5/eureka-server/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | server.port=1111
2 | #eureka.instance.hostname=localhost
3 |
4 | eureka.client.register-with-eureka=false
5 | eureka.client.fetch-registry=false
6 | eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
--------------------------------------------------------------------------------
/spring_cloud_in_action/eureka-server-ha/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | server.port=1111
2 | eureka.instance.hostname=localhost
3 |
4 | eureka.client.register-with-eureka=false
5 | eureka.client.fetch-registry=false
6 | eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-1/eureka-server/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | server.port=1111
2 | #eureka.instance.hostname=localhost
3 |
4 | eureka.client.register-with-eureka=false
5 | eureka.client.fetch-registry=false
6 | eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-3/eureka-server/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | server.port=1111
2 | #eureka.instance.hostname=localhost
3 |
4 | eureka.client.register-with-eureka=false
5 | eureka.client.fetch-registry=false
6 | eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-5/eureka-server/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | server.port=1111
2 | #eureka.instance.hostname=localhost
3 |
4 | eureka.client.register-with-eureka=false
5 | eureka.client.fetch-registry=false
6 | eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
--------------------------------------------------------------------------------
/spring_cloud_in_action/api-gateway-dynamic-route/src/main/resources/bootstrap.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=api-gateway
2 | server.port=5556
3 |
4 | #spring.cloud.config.profile=dev
5 | spring.cloud.config.uri=http://localhost:7001/
6 |
7 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
--------------------------------------------------------------------------------
/2-Dalston版教程示例/eureka-consumer-feign-hystrix/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=eureka-consumer
2 | server.port=2101
3 |
4 | eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/
5 |
6 | feign.hystrix.enabled=true
7 |
8 | logging.file=${spring.application.name}.log
9 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/api-gateway-dynamic-filter/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=api-gateway
2 | server.port=5555
3 |
4 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
5 |
6 | zuul.filter.root=filter
7 | zuul.filter.interval=5
8 |
9 | #zuul.debug.request=true
10 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/api-gateway-exception/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=api-gateway
2 | server.port=5555
3 |
4 | # eureka
5 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
6 |
7 | #zuul.ThrowExceptionFilter.pre.disable=true
8 | zuul.ThrowExceptionPostFilter.post.disable=true
9 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/feign-consumer/src/main/java/com/didispace/web/RefactorHelloService.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import org.springframework.cloud.netflix.feign.FeignClient;
4 |
5 | @FeignClient(value = "HELLO-SERVICE")
6 | public interface RefactorHelloService extends com.didispace.service.HelloService {
7 |
8 |
9 | }
--------------------------------------------------------------------------------
/spring_cloud_in_action/trace-2/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
2 |
3 | spring.zipkin.base-url=http://localhost:9411
4 |
5 | spring.sleuth.sampler.percentage=0.1
6 |
7 | # log trace detail
8 | logging.level.org.springframework.web.servlet.DispatcherServlet=DEBUG
--------------------------------------------------------------------------------
/2-Dalston版教程示例/turbine/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=turbine
2 |
3 | server.port=8989
4 | management.port=8990
5 |
6 | eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/
7 |
8 | turbine.app-config=eureka-consumer-ribbon-hystrix
9 | turbine.cluster-name-expression="default"
10 | turbine.combine-host-port=true
--------------------------------------------------------------------------------
/spring_cloud_in_action/diagram-uml/BusEndPoint.uml:
--------------------------------------------------------------------------------
1 |
2 |
3 | JAVA
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | All
12 |
13 |
14 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-client/src/main/resources/bootstrap.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=didispace
2 |
3 | spring.cloud.config.profile=dev
4 | spring.cloud.config.uri=http://localhost:7001/
5 | #spring.cloud.config.username=user
6 | #spring.cloud.config.password=37cc5635-559b-4e6f-b633-7e932b813f73
7 |
8 | server.port=7002
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/turbine/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=turbine
2 |
3 | server.port=8989
4 | management.port=8990
5 |
6 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
7 |
8 | turbine.app-config=RIBBON-CONSUMER,RIBBON-CONSUMER-2
9 | turbine.cluster-name-expression="default"
10 | turbine.combine-host-port=true
--------------------------------------------------------------------------------
/spring_cloud_in_action/ribbon-consumer/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=ribbon-consumer
2 | server.port=9000
3 |
4 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
5 |
6 | #hystrix.command.helloKey.execution.isolation.thread.timeoutInMilliseconds=5000
7 | hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=2000
--------------------------------------------------------------------------------
/2-Dalston版教程示例/api-gateway-with-eureka/src/main/resources/application.yaml:
--------------------------------------------------------------------------------
1 | spring:
2 | application:
3 | name: api-gateway
4 |
5 | server:
6 | port: 1101
7 |
8 | zuul:
9 | routes:
10 | api-a:
11 | path: /api-a/**
12 | serviceId: eureka-client
13 |
14 | eureka:
15 | client:
16 | serviceUrl:
17 | defaultZone: http://localhost:1001/eureka/
18 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/config-server-git/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | application:
3 | name: config-server
4 | cloud:
5 | config:
6 | server:
7 | git:
8 | uri: http://git.oschina.net/didispace/config-repo-demo/
9 | # search-paths: repo
10 | # username:
11 | # password:
12 |
13 | server:
14 | port: 1201
15 |
--------------------------------------------------------------------------------
/Chapter1-1-8/config-client-eureka/src/main/resources/bootstrap.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=didispace
2 | server.port=7002
3 |
4 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
5 |
6 | spring.cloud.config.discovery.enabled=true
7 | spring.cloud.config.discovery.serviceId=config-server
8 | spring.cloud.config.profile=dev
9 |
10 | spring.cloud.config.failFast=true
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-client-eureka/src/main/resources/bootstrap.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=didispace
2 | server.port=7002
3 |
4 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
5 |
6 | spring.cloud.config.discovery.enabled=true
7 | spring.cloud.config.discovery.serviceId=config-server
8 | spring.cloud.config.profile=dev
9 |
10 | spring.cloud.config.failFast=true
--------------------------------------------------------------------------------
/spring_cloud_in_action/trace-1/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=trace-1
2 | server.port=9101
3 |
4 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
5 |
6 | spring.zipkin.base-url=http://localhost:9411
7 |
8 | spring.sleuth.sampler.percentage=0.1
9 |
10 | # log trace detail
11 | logging.level.org.springframework.web.servlet.DispatcherServlet=DEBUG
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-8/config-client-eureka/src/main/resources/bootstrap.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=didispace
2 | server.port=7002
3 |
4 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
5 |
6 | spring.cloud.config.discovery.enabled=true
7 | spring.cloud.config.discovery.serviceId=config-server
8 | spring.cloud.config.profile=dev
9 |
10 | spring.cloud.config.failFast=true
--------------------------------------------------------------------------------
/spring_cloud_in_action/zipkin-server-stream/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=zipkin-server-stream
2 | server.port=9411
3 |
4 | spring.rabbitmq.host=localhost
5 | spring.rabbitmq.port=5672
6 | spring.rabbitmq.username=springcloud
7 | spring.rabbitmq.password=123456
8 |
9 | #eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
10 |
11 | logging.file=${spring.application.name}.log
--------------------------------------------------------------------------------
/spring_cloud_in_action/spring-boot-hello/src/main/java/com/didispace/web/HelloController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import org.springframework.web.bind.annotation.RequestMapping;
4 | import org.springframework.web.bind.annotation.RestController;
5 |
6 | @RestController
7 | public class HelloController {
8 |
9 | @RequestMapping("/hello")
10 | public String index() {
11 | return "Hello World";
12 | }
13 |
14 | }
--------------------------------------------------------------------------------
/spring_cloud_in_action/rabbitmq-hello/src/main/java/com/didispace/HelloApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 |
6 | @SpringBootApplication
7 | public class HelloApplication {
8 |
9 | public static void main(String[] args) {
10 | SpringApplication.run(HelloApplication.class, args);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/spring-boot-hello/src/main/java/com/didispace/HelloApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 |
6 | @SpringBootApplication
7 | public class HelloApplication {
8 |
9 | public static void main(String[] args) {
10 | SpringApplication.run(HelloApplication.class, args);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/stream-producer/src/main/java/com/didispace/HelloApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 |
6 | @SpringBootApplication
7 | public class HelloApplication {
8 |
9 | public static void main(String[] args) {
10 | SpringApplication.run(HelloApplication.class, args);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/api-gateway/src/main/java/com/didispace/HelloController.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.web.bind.annotation.RequestMapping;
4 | import org.springframework.web.bind.annotation.RestController;
5 |
6 |
7 | @RestController
8 | public class HelloController {
9 |
10 | @RequestMapping("/local/hello")
11 | public String hello() {
12 | return "Hello World Local";
13 | }
14 |
15 | }
--------------------------------------------------------------------------------
/Chapter1-1-4/config-client/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 |
6 | @SpringBootApplication
7 | public class Application {
8 |
9 | public static void main(String[] args) {
10 | new SpringApplicationBuilder(Application.class).web(true).run(args);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/eureka-consumer-feign-hystrix/src/main/java/com/didispace/DcClientFallback.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.stereotype.Component;
4 |
5 | /**
6 | * @author 翟永超
7 | * @create 2017/6/24.
8 | * @blog http://blog.didispace.com
9 | */
10 | @Component
11 | public class DcClientFallback implements DcClient {
12 |
13 | @Override
14 | public String consumer() {
15 | return "fallback";
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/api-gateway-consul/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=api-gateway-consul
2 | server.port=5555
3 |
4 | # routes to serviceId
5 | zuul.routes.api-a.path=/consul/**
6 | zuul.routes.api-a.serviceId=consul-client-1
7 |
8 | # routes to url
9 | zuul.routes.api-a-url.path=/api-a-url/**
10 | zuul.routes.api-a-url.url=http://localhost:8080/
11 |
12 | spring.cloud.consul.host=localhost
13 | spring.cloud.consul.port=8500
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-client/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 |
6 | @SpringBootApplication
7 | public class Application {
8 |
9 | public static void main(String[] args) {
10 | new SpringApplicationBuilder(Application.class).web(true).run(args);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-4/config-client/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 |
6 | @SpringBootApplication
7 | public class Application {
8 |
9 | public static void main(String[] args) {
10 | new SpringApplicationBuilder(Application.class).web(true).run(args);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/api-gateway/src/main/resources/application.yaml:
--------------------------------------------------------------------------------
1 | spring:
2 | application:
3 | name: api-gateway
4 |
5 | server:
6 | port: 1101
7 |
8 | zuul:
9 | routes:
10 | # single-instance
11 | api-a:
12 | path: /api-a/**
13 | url: http://localhost:2001/
14 | # multi-instance
15 | api-b:
16 | path: /api-b/**
17 | serviceId: api-b
18 |
19 | api-b:
20 | ribbon:
21 | listOfServers: http://localhost:2001/, http://localhost:2002/
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-server/src/main/resources/didispace.properties:
--------------------------------------------------------------------------------
1 | from=local
2 | #from={cipher}AQBL4zN73nFahuirqUyWjgMD3o7FJJstbVKWfrSqh9k4V/GiS9osQRl0U17xsBX5nciFvm1XcfnB1tD13Hg3OCZds9tNS7NSixED4Kx7Bgq5vIuTzZpZkVb5YYvJyjFUhHnvdeTfgblsSS2a1NTABZ19n6quYnaupLdONKsa6goqagbg9FFwdvjLx0dWKfDsAF74lO9qYuCNsR2oJiDwvWnry3r3x8ewvXb6u0LxZ9DXGWPRsLITTY7BRkuwt3bra93gj4Elp4r1JFMwgAt6EbdF+7mXxVO51MPn9xvRKZPgpkk+e40t8Y/YjJ2P4SwzdbzMLuKbOwq2+MbWa37eyUt+f9BZ2GCFDHQPKDNIP3dWo4vuO0mja19osiWYUkOufcs=
--------------------------------------------------------------------------------
/2-Dalston版教程示例/eureka-consumer-feign/src/main/java/com/didispace/DcClient.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.cloud.netflix.feign.FeignClient;
4 | import org.springframework.web.bind.annotation.GetMapping;
5 |
6 | /**
7 | * @author 翟永超
8 | * @create 2017/6/24.
9 | * @blog http://blog.didispace.com
10 | */
11 | @FeignClient("eureka-client")
12 | public interface DcClient {
13 |
14 | @GetMapping("/dc")
15 | String consumer();
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/config-client/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 |
6 | //@EnableDiscoveryClient
7 | @SpringBootApplication
8 | public class Application {
9 |
10 | public static void main(String[] args) {
11 | new SpringApplicationBuilder(Application.class).web(true).run(args);
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/eureka-feign-api/src/main/java/com/didispace/api/HelloService.java:
--------------------------------------------------------------------------------
1 | package com.didispace.api;
2 |
3 | import org.springframework.web.bind.annotation.GetMapping;
4 | import org.springframework.web.bind.annotation.RequestParam;
5 |
6 | /**
7 | * @author 翟永超
8 | * @create 2017/8/8.
9 | * @blog http://blog.didispace.com
10 | */
11 | public interface HelloService {
12 |
13 | @GetMapping("/hello")
14 | String hello(@RequestParam(value = "name") String name);
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/Chapter1-1-3/eureka-feign/src/main/java/com/didispace/service/ComputeClientHystrix.java:
--------------------------------------------------------------------------------
1 | package com.didispace.service;
2 |
3 | import org.springframework.stereotype.Component;
4 | import org.springframework.web.bind.annotation.RequestParam;
5 |
6 | @Component
7 | public class ComputeClientHystrix implements ComputeClient {
8 |
9 | @Override
10 | public Integer add(@RequestParam(value = "a") Integer a, @RequestParam(value = "b") Integer b) {
11 | return -9999;
12 | }
13 |
14 | }
--------------------------------------------------------------------------------
/Chapter1-1-8/config-server-eureka/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=config-server
2 | server.port=7001
3 |
4 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
5 |
6 | # git¹ÜÀíÅäÖÃ
7 | spring.cloud.config.server.git.uri=http://git.oschina.net/didispace/SpringCloud-Learning/
8 | spring.cloud.config.server.git.searchPaths=Chapter1-1-8/config-repo
9 | spring.cloud.config.server.git.username=username
10 | spring.cloud.config.server.git.password=password
11 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-3/eureka-feign/src/main/java/com/didispace/service/ComputeClientHystrix.java:
--------------------------------------------------------------------------------
1 | package com.didispace.service;
2 |
3 | import org.springframework.stereotype.Component;
4 | import org.springframework.web.bind.annotation.RequestParam;
5 |
6 | @Component
7 | public class ComputeClientHystrix implements ComputeClient {
8 |
9 | @Override
10 | public Integer add(@RequestParam(value = "a") Integer a, @RequestParam(value = "b") Integer b) {
11 | return -9999;
12 | }
13 |
14 | }
--------------------------------------------------------------------------------
/Chapter1-1-5/api-gateway/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=api-gateway
2 | server.port=5555
3 |
4 | # routes to serviceId
5 | zuul.routes.api-a.path=/api-a/**
6 | zuul.routes.api-a.serviceId=service-A
7 |
8 | zuul.routes.api-b.path=/api-b/**
9 | zuul.routes.api-b.serviceId=service-B
10 |
11 | # routes to url
12 | zuul.routes.api-a-url.path=/api-a-url/**
13 | zuul.routes.api-a-url.url=http://localhost:2222/
14 |
15 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
--------------------------------------------------------------------------------
/spring_cloud_in_action/zipkin-server/src/main/java/com/didispace/ZipkinApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import zipkin.server.EnableZipkinServer;
6 |
7 | @EnableZipkinServer
8 | @SpringBootApplication
9 | public class ZipkinApplication {
10 |
11 | public static void main(String[] args) {
12 | SpringApplication.run(ZipkinApplication.class, args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-8/config-server-eureka/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=config-server
2 | server.port=7001
3 |
4 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
5 |
6 | # git¹ÜÀíÅäÖÃ
7 | spring.cloud.config.server.git.uri=http://git.oschina.net/didispace/SpringCloud-Learning/
8 | spring.cloud.config.server.git.searchPaths=Chapter1-1-8/config-repo
9 | spring.cloud.config.server.git.username=username
10 | spring.cloud.config.server.git.password=password
11 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-server-eureka/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=config-server
2 | server.port=7001
3 |
4 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
5 |
6 | # git¹ÜÀíÅäÖÃ
7 | spring.cloud.config.server.git.uri=http://git.oschina.net/didispace/SpringCloud-Learning/
8 | spring.cloud.config.server.git.searchPaths=spring_cloud_in_action/config-repo
9 | spring.cloud.config.server.git.username=username
10 | spring.cloud.config.server.git.password=password
11 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-5/api-gateway/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=api-gateway
2 | server.port=5555
3 |
4 | # routes to serviceId
5 | zuul.routes.api-a.path=/api-a/**
6 | zuul.routes.api-a.serviceId=service-A
7 |
8 | zuul.routes.api-b.path=/api-b/**
9 | zuul.routes.api-b.serviceId=service-B
10 |
11 | # routes to url
12 | zuul.routes.api-a-url.path=/api-a-url/**
13 | zuul.routes.api-a-url.url=http://localhost:2222/
14 |
15 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
--------------------------------------------------------------------------------
/2-Dalston版教程示例/eureka-consumer-feign-hystrix/src/main/java/com/didispace/DcClient.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.cloud.netflix.feign.FeignClient;
4 | import org.springframework.web.bind.annotation.GetMapping;
5 |
6 | /**
7 | * @author 翟永超
8 | * @create 2017/6/24.
9 | * @blog http://blog.didispace.com
10 | */
11 | @FeignClient(name = "eureka-client", fallback = DcClientFallback.class)
12 | public interface DcClient {
13 |
14 | @GetMapping("/dc")
15 | String consumer();
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/api-gateway/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.builder.SpringApplicationBuilder;
4 | import org.springframework.cloud.client.SpringCloudApplication;
5 | import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
6 |
7 | @EnableZuulProxy
8 | @SpringCloudApplication
9 | public class Application {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(Application.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/Chapter1-1-7/config-client-eureka/src/main/resources/bootstrap.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=didispace
2 | server.port=7002
3 |
4 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
5 |
6 | spring.cloud.config.discovery.enabled=true
7 | spring.cloud.config.discovery.serviceId=config-server
8 | spring.cloud.config.profile=dev
9 |
10 | spring.cloud.config.failFast=true
11 |
12 | spring.rabbitmq.host=localhost
13 | spring.rabbitmq.port=5672
14 | spring.rabbitmq.username=springcloud
15 | spring.rabbitmq.password=123456
--------------------------------------------------------------------------------
/2-Dalston版教程示例/api-gateway-with-eureka/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.builder.SpringApplicationBuilder;
4 | import org.springframework.cloud.client.SpringCloudApplication;
5 | import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
6 |
7 | @EnableZuulProxy
8 | @SpringCloudApplication
9 | public class Application {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(Application.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/Chapter1-1-4/config-server/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.config.server.EnableConfigServer;
6 |
7 | @EnableConfigServer
8 | @SpringBootApplication
9 | public class Application {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(Application.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-7/config-client-eureka/src/main/resources/bootstrap.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=didispace
2 | server.port=7002
3 |
4 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
5 |
6 | spring.cloud.config.discovery.enabled=true
7 | spring.cloud.config.discovery.serviceId=config-server
8 | spring.cloud.config.profile=dev
9 |
10 | spring.cloud.config.failFast=true
11 |
12 | spring.rabbitmq.host=localhost
13 | spring.rabbitmq.port=5672
14 | spring.rabbitmq.username=springcloud
15 | spring.rabbitmq.password=123456
--------------------------------------------------------------------------------
/2-Dalston版教程示例/config-server-git/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.config.server.EnableConfigServer;
6 |
7 | @EnableConfigServer
8 | @SpringBootApplication
9 | public class Application {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(Application.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/Chapter1-1-1/eureka-server/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
6 |
7 | @EnableEurekaServer
8 | @SpringBootApplication
9 | public class Application {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(Application.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/Chapter1-1-3/eureka-server/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
6 |
7 | @EnableEurekaServer
8 | @SpringBootApplication
9 | public class Application {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(Application.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/Chapter1-1-5/eureka-server/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
6 |
7 | @EnableEurekaServer
8 | @SpringBootApplication
9 | public class Application {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(Application.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/Chapter1-1-6/eureka-server/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
6 |
7 | @EnableEurekaServer
8 | @SpringBootApplication
9 | public class Application {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(Application.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/trace-stream-1/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=trace-1
2 | server.port=9101
3 |
4 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
5 |
6 | spring.rabbitmq.host=localhost
7 | spring.rabbitmq.port=5672
8 | spring.rabbitmq.username=springcloud
9 | spring.rabbitmq.password=123456
10 |
11 | #spring.sleuth.sampler.percentage=0.1
12 |
13 | # log trace detail
14 | logging.level.org.springframework.web.servlet.DispatcherServlet=DEBUG
15 |
16 | logging.file=${spring.application.name}.log
--------------------------------------------------------------------------------
/spring_cloud_in_action/trace-stream-2/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=trace-2
2 | server.port=9102
3 |
4 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
5 |
6 | spring.rabbitmq.host=localhost
7 | spring.rabbitmq.port=5672
8 | spring.rabbitmq.username=springcloud
9 | spring.rabbitmq.password=123456
10 |
11 | #spring.sleuth.sampler.percentage=0.1
12 |
13 | # log trace detail
14 | logging.level.org.springframework.web.servlet.DispatcherServlet=DEBUG
15 |
16 | logging.file=${spring.application.name}.log
--------------------------------------------------------------------------------
/2-Dalston版教程示例/consul-client/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | @EnableDiscoveryClient
8 | @SpringBootApplication
9 | public class Application {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(Application.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/eureka-client/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | @EnableDiscoveryClient
8 | @SpringBootApplication
9 | public class Application {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(Application.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/eureka-server/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
6 |
7 | @EnableEurekaServer
8 | @SpringBootApplication
9 | public class Application {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(Application.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-server/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.config.server.EnableConfigServer;
6 |
7 | @EnableConfigServer
8 | @SpringBootApplication
9 | public class Application {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(Application.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-4/config-server/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.config.server.EnableConfigServer;
6 |
7 | @EnableConfigServer
8 | @SpringBootApplication
9 | public class Application {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(Application.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/Chapter1-1-7/config-client-eureka/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | @EnableDiscoveryClient
8 | @SpringBootApplication
9 | public class Application {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(Application.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/Chapter1-1-8/config-client-eureka/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | @EnableDiscoveryClient
8 | @SpringBootApplication
9 | public class Application {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(Application.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/eureka-server/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
6 |
7 | @EnableEurekaServer
8 | @SpringBootApplication
9 | public class Application {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(Application.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-1/eureka-server/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
6 |
7 | @EnableEurekaServer
8 | @SpringBootApplication
9 | public class Application {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(Application.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-3/eureka-server/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
6 |
7 | @EnableEurekaServer
8 | @SpringBootApplication
9 | public class Application {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(Application.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-5/eureka-server/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
6 |
7 | @EnableEurekaServer
8 | @SpringBootApplication
9 | public class Application {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(Application.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-6/eureka-server/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
6 |
7 | @EnableEurekaServer
8 | @SpringBootApplication
9 | public class Application {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(Application.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/hystrix-collapser-provider/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | @EnableDiscoveryClient
8 | @SpringBootApplication
9 | public class Application {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(Application.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/Chapter1-1-7/config-client-eureka-kafka/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | @EnableDiscoveryClient
8 | @SpringBootApplication
9 | public class Application {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(Application.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-client-eureka-rabbit/src/main/resources/bootstrap.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=didispace
2 | server.port=7002
3 |
4 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
5 |
6 | spring.cloud.config.discovery.enabled=true
7 | spring.cloud.config.discovery.serviceId=config-server
8 | spring.cloud.config.profile=dev
9 |
10 | spring.cloud.config.failFast=true
11 |
12 | # RabbitMQ
13 | spring.rabbitmq.host=localhost
14 | spring.rabbitmq.port=5672
15 | spring.rabbitmq.username=springcloud
16 | spring.rabbitmq.password=123456
--------------------------------------------------------------------------------
/spring_cloud_in_action/eureka-server-ha/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
6 |
7 | @EnableEurekaServer
8 | @SpringBootApplication
9 | public class Application {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(Application.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/stream-consumer/src/main/java/com/didispace/HelloApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.context.annotation.Bean;
6 | import org.springframework.messaging.converter.MessageConverter;
7 |
8 | @SpringBootApplication
9 | public class HelloApplication {
10 |
11 | public static void main(String[] args) {
12 | SpringApplication.run(HelloApplication.class, args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-client-eureka/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | @EnableDiscoveryClient
8 | @SpringBootApplication
9 | public class Application {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(Application.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/rabbitmq-hello/src/main/java/com/didispace/rabbit/RabbitConfig.java:
--------------------------------------------------------------------------------
1 | package com.didispace.rabbit;
2 |
3 | import org.springframework.amqp.core.Queue;
4 | import org.springframework.context.annotation.Bean;
5 | import org.springframework.context.annotation.Configuration;
6 |
7 | /**
8 | * @author 翟永超
9 | * @create 2016/9/25.
10 | * @blog http://blog.didispace.com
11 | */
12 | @Configuration
13 | public class RabbitConfig {
14 |
15 | @Bean
16 | public Queue helloQueue() {
17 | return new Queue("hello");
18 | }
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-7/config-client-eureka/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | @EnableDiscoveryClient
8 | @SpringBootApplication
9 | public class Application {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(Application.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-8/config-client-eureka/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | @EnableDiscoveryClient
8 | @SpringBootApplication
9 | public class Application {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(Application.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/hystrix-dashboard/src/main/java/com/didispace/HystrixDashboardApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.cloud.client.SpringCloudApplication;
5 | import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
6 |
7 | @EnableHystrixDashboard
8 | @SpringCloudApplication
9 | public class HystrixDashboardApplication {
10 |
11 | public static void main(String[] args) {
12 | SpringApplication.run(HystrixDashboardApplication.class, args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/Chapter1-1-7/config-client-eureka-kafka/src/main/resources/bootstrap.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=didispace
2 | server.port=7002
3 |
4 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
5 |
6 | spring.cloud.config.discovery.enabled=true
7 | spring.cloud.config.discovery.serviceId=config-server
8 | spring.cloud.config.profile=dev
9 |
10 | spring.cloud.config.failFast=true
11 |
12 | #kafka
13 | spring.cloud.stream.kafka.binder.zk-nodes=localhost:2181
14 | spring.cloud.stream.kafka.binder.brokers=localhost:9092
15 |
16 | spring.cloud.bus.trace.enabled=true
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-client-eureka-kafka/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | @EnableDiscoveryClient
8 | @SpringBootApplication
9 | public class Application {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(Application.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-client-eureka-rabbit/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | @EnableDiscoveryClient
8 | @SpringBootApplication
9 | public class Application {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(Application.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-7/config-client-eureka-kafka/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | @EnableDiscoveryClient
8 | @SpringBootApplication
9 | public class Application {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(Application.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-client-eureka-kafka/src/main/resources/bootstrap.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=didispace
2 | server.port=7002
3 |
4 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
5 |
6 | spring.cloud.config.discovery.enabled=true
7 | spring.cloud.config.discovery.serviceId=config-server
8 | spring.cloud.config.profile=dev
9 |
10 | spring.cloud.config.failFast=true
11 |
12 | #kafka
13 | spring.cloud.stream.kafka.binder.zk-nodes=localhost:2181
14 | spring.cloud.stream.kafka.binder.brokers=localhost:9092
15 |
16 | spring.cloud.bus.trace.enabled=true
--------------------------------------------------------------------------------
/spring_cloud_in_action/hystrix-dashboard/src/main/java/com/didispace/HystrixDashboardApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.cloud.client.SpringCloudApplication;
5 | import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
6 |
7 | @EnableHystrixDashboard
8 | @SpringCloudApplication
9 | public class HystrixDashboardApplication {
10 |
11 | public static void main(String[] args) {
12 | SpringApplication.run(HystrixDashboardApplication.class, args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-7/config-client-eureka-kafka/src/main/resources/bootstrap.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=didispace
2 | server.port=7002
3 |
4 | eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
5 |
6 | spring.cloud.config.discovery.enabled=true
7 | spring.cloud.config.discovery.serviceId=config-server
8 | spring.cloud.config.profile=dev
9 |
10 | spring.cloud.config.failFast=true
11 |
12 | #kafka
13 | spring.cloud.stream.kafka.binder.zk-nodes=localhost:2181
14 | spring.cloud.stream.kafka.binder.brokers=localhost:9092
15 |
16 | spring.cloud.bus.trace.enabled=true
--------------------------------------------------------------------------------
/Chapter1-1-5/service-A/src/main/java/com/didispace/ComputeServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | @EnableDiscoveryClient
8 | @SpringBootApplication
9 | public class ComputeServiceApplication {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(ComputeServiceApplication.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/Chapter1-1-5/service-B/src/main/java/com/didispace/ComputeServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | @EnableDiscoveryClient
8 | @SpringBootApplication
9 | public class ComputeServiceApplication {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(ComputeServiceApplication.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/Chapter1-1-1/compute-service/src/main/java/com/didispace/ComputeServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | @EnableDiscoveryClient
8 | @SpringBootApplication
9 | public class ComputeServiceApplication {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(ComputeServiceApplication.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/Chapter1-1-3/compute-service/src/main/java/com/didispace/ComputeServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | @EnableDiscoveryClient
8 | @SpringBootApplication
9 | public class ComputeServiceApplication {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(ComputeServiceApplication.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/Chapter1-1-6/compute-service/src/main/java/com/didispace/ComputeServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | @EnableDiscoveryClient
8 | @SpringBootApplication
9 | public class ComputeServiceApplication {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(ComputeServiceApplication.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-5/service-A/src/main/java/com/didispace/ComputeServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | @EnableDiscoveryClient
8 | @SpringBootApplication
9 | public class ComputeServiceApplication {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(ComputeServiceApplication.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-5/service-B/src/main/java/com/didispace/ComputeServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | @EnableDiscoveryClient
8 | @SpringBootApplication
9 | public class ComputeServiceApplication {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(ComputeServiceApplication.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-1/compute-service/src/main/java/com/didispace/ComputeServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | @EnableDiscoveryClient
8 | @SpringBootApplication
9 | public class ComputeServiceApplication {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(ComputeServiceApplication.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-3/compute-service/src/main/java/com/didispace/ComputeServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | @EnableDiscoveryClient
8 | @SpringBootApplication
9 | public class ComputeServiceApplication {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(ComputeServiceApplication.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-6/compute-service/src/main/java/com/didispace/ComputeServiceApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | @EnableDiscoveryClient
8 | @SpringBootApplication
9 | public class ComputeServiceApplication {
10 |
11 | public static void main(String[] args) {
12 | new SpringApplicationBuilder(ComputeServiceApplication.class).web(true).run(args);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/Chapter1-1-2/eureka-feign/src/main/java/com/didispace/FeignApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.netflix.feign.EnableFeignClients;
7 |
8 | @SpringBootApplication
9 | @EnableDiscoveryClient
10 | @EnableFeignClients
11 | public class FeignApplication {
12 |
13 | public static void main(String[] args) {
14 | SpringApplication.run(FeignApplication.class, args);
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/Chapter1-1-3/eureka-feign/src/main/java/com/didispace/FeignApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.netflix.feign.EnableFeignClients;
7 |
8 | @SpringBootApplication
9 | @EnableDiscoveryClient
10 | @EnableFeignClients
11 | public class FeignApplication {
12 |
13 | public static void main(String[] args) {
14 | SpringApplication.run(FeignApplication.class, args);
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/Chapter1-1-2/eureka-feign/src/main/java/com/didispace/service/ComputeClient.java:
--------------------------------------------------------------------------------
1 | package com.didispace.service;
2 |
3 | import org.springframework.cloud.netflix.feign.FeignClient;
4 | import org.springframework.web.bind.annotation.RequestMapping;
5 | import org.springframework.web.bind.annotation.RequestMethod;
6 | import org.springframework.web.bind.annotation.RequestParam;
7 |
8 | @FeignClient("compute-service")
9 | public interface ComputeClient {
10 |
11 | @RequestMapping(method = RequestMethod.GET, value = "/add")
12 | Integer add(@RequestParam(value = "a") Integer a, @RequestParam(value = "b") Integer b);
13 |
14 | }
--------------------------------------------------------------------------------
/spring_cloud_in_action/hello-service/src/main/java/com/didispace/HelloApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.netflix.hystrix.EnableHystrix;
7 |
8 | @EnableHystrix
9 | @EnableDiscoveryClient
10 | @SpringBootApplication
11 | public class HelloApplication {
12 |
13 | public static void main(String[] args) {
14 | SpringApplication.run(HelloApplication.class, args);
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-2/eureka-feign/src/main/java/com/didispace/FeignApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.netflix.feign.EnableFeignClients;
7 |
8 | @SpringBootApplication
9 | @EnableDiscoveryClient
10 | @EnableFeignClients
11 | public class FeignApplication {
12 |
13 | public static void main(String[] args) {
14 | SpringApplication.run(FeignApplication.class, args);
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-3/eureka-feign/src/main/java/com/didispace/FeignApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.netflix.feign.EnableFeignClients;
7 |
8 | @SpringBootApplication
9 | @EnableDiscoveryClient
10 | @EnableFeignClients
11 | public class FeignApplication {
12 |
13 | public static void main(String[] args) {
14 | SpringApplication.run(FeignApplication.class, args);
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-2/eureka-feign/src/main/java/com/didispace/service/ComputeClient.java:
--------------------------------------------------------------------------------
1 | package com.didispace.service;
2 |
3 | import org.springframework.cloud.netflix.feign.FeignClient;
4 | import org.springframework.web.bind.annotation.RequestMapping;
5 | import org.springframework.web.bind.annotation.RequestMethod;
6 | import org.springframework.web.bind.annotation.RequestParam;
7 |
8 | @FeignClient("compute-service")
9 | public interface ComputeClient {
10 |
11 | @RequestMapping(method = RequestMethod.GET, value = "/add")
12 | Integer add(@RequestParam(value = "a") Integer a, @RequestParam(value = "b") Integer b);
13 |
14 | }
--------------------------------------------------------------------------------
/2-Dalston版教程示例/eureka-consumer-feign/src/main/java/com/didispace/DcController.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.beans.factory.annotation.Autowired;
4 | import org.springframework.web.bind.annotation.GetMapping;
5 | import org.springframework.web.bind.annotation.RestController;
6 |
7 | /**
8 | * @author 翟永超
9 | * @create 2017/4/15.
10 | * @blog http://blog.didispace.com
11 | */
12 | @RestController
13 | public class DcController {
14 |
15 | @Autowired
16 | DcClient dcClient;
17 |
18 | @GetMapping("/consumer")
19 | public String dc() {
20 | return dcClient.consumer();
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/Chapter1-1-7/config-server-eureka/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.config.server.EnableConfigServer;
7 |
8 | @EnableDiscoveryClient
9 | @EnableConfigServer
10 | @SpringBootApplication
11 | public class Application {
12 |
13 | public static void main(String[] args) {
14 | new SpringApplicationBuilder(Application.class).web(true).run(args);
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/Chapter1-1-8/config-server-eureka/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.config.server.EnableConfigServer;
7 |
8 | @EnableDiscoveryClient
9 | @EnableConfigServer
10 | @SpringBootApplication
11 | public class Application {
12 |
13 | public static void main(String[] args) {
14 | new SpringApplicationBuilder(Application.class).web(true).run(args);
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/eureka-consumer-feign-hystrix/src/main/java/com/didispace/DcController.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.beans.factory.annotation.Autowired;
4 | import org.springframework.web.bind.annotation.GetMapping;
5 | import org.springframework.web.bind.annotation.RestController;
6 |
7 | /**
8 | * @author 翟永超
9 | * @create 2017/4/15.
10 | * @blog http://blog.didispace.com
11 | */
12 | @RestController
13 | public class DcController {
14 |
15 | @Autowired
16 | DcClient dcClient;
17 |
18 | @GetMapping("/consumer")
19 | public String dc() {
20 | return dcClient.consumer();
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/eureka-consumer-feign/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.netflix.feign.EnableFeignClients;
7 |
8 | @EnableFeignClients
9 | @EnableDiscoveryClient
10 | @SpringBootApplication
11 | public class Application {
12 |
13 | public static void main(String[] args) {
14 | new SpringApplicationBuilder(Application.class).web(true).run(args);
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/Chapter1-1-7/config-server-eureka-kafka/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.config.server.EnableConfigServer;
7 |
8 | @EnableDiscoveryClient
9 | @EnableConfigServer
10 | @SpringBootApplication
11 | public class Application {
12 |
13 | public static void main(String[] args) {
14 | new SpringApplicationBuilder(Application.class).web(true).run(args);
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/eureka-consumer-feign-hystrix/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.netflix.feign.EnableFeignClients;
7 |
8 | @EnableFeignClients
9 | @EnableDiscoveryClient
10 | @SpringBootApplication
11 | public class Application {
12 |
13 | public static void main(String[] args) {
14 | new SpringApplicationBuilder(Application.class).web(true).run(args);
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-server-eureka/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.config.server.EnableConfigServer;
7 |
8 | @EnableDiscoveryClient
9 | @EnableConfigServer
10 | @SpringBootApplication
11 | public class Application {
12 |
13 | public static void main(String[] args) {
14 | new SpringApplicationBuilder(Application.class).web(true).run(args);
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-7/config-server-eureka/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.config.server.EnableConfigServer;
7 |
8 | @EnableDiscoveryClient
9 | @EnableConfigServer
10 | @SpringBootApplication
11 | public class Application {
12 |
13 | public static void main(String[] args) {
14 | new SpringApplicationBuilder(Application.class).web(true).run(args);
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-8/config-server-eureka/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.config.server.EnableConfigServer;
7 |
8 | @EnableDiscoveryClient
9 | @EnableConfigServer
10 | @SpringBootApplication
11 | public class Application {
12 |
13 | public static void main(String[] args) {
14 | new SpringApplicationBuilder(Application.class).web(true).run(args);
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-server-eureka-kafka/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.config.server.EnableConfigServer;
7 |
8 | @EnableDiscoveryClient
9 | @EnableConfigServer
10 | @SpringBootApplication
11 | public class Application {
12 |
13 | public static void main(String[] args) {
14 | new SpringApplicationBuilder(Application.class).web(true).run(args);
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-7/config-server-eureka-kafka/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.config.server.EnableConfigServer;
7 |
8 | @EnableDiscoveryClient
9 | @EnableConfigServer
10 | @SpringBootApplication
11 | public class Application {
12 |
13 | public static void main(String[] args) {
14 | new SpringApplicationBuilder(Application.class).web(true).run(args);
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/Chapter1-1-3/eureka-feign/src/main/java/com/didispace/service/ComputeClient.java:
--------------------------------------------------------------------------------
1 | package com.didispace.service;
2 |
3 | import org.springframework.cloud.netflix.feign.FeignClient;
4 | import org.springframework.web.bind.annotation.RequestMapping;
5 | import org.springframework.web.bind.annotation.RequestMethod;
6 | import org.springframework.web.bind.annotation.RequestParam;
7 |
8 | @FeignClient(value = "compute-service", fallback = ComputeClientHystrix.class)
9 | public interface ComputeClient {
10 |
11 | @RequestMapping(method = RequestMethod.GET, value = "/add")
12 | Integer add(@RequestParam(value = "a") Integer a, @RequestParam(value = "b") Integer b);
13 |
14 | }
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-server-eureka-rabbit/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.config.server.EnableConfigServer;
7 |
8 | @EnableDiscoveryClient
9 | @EnableConfigServer
10 | @SpringBootApplication
11 | public class Application {
12 |
13 | public static void main(String[] args) {
14 | new SpringApplicationBuilder(Application.class).web(true).run(args);
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/api-gateway-consul/filter/post/PostFilter.groovy:
--------------------------------------------------------------------------------
1 | package com.didispace.filter.post
2 |
3 | import org.slf4j.Logger
4 | import org.slf4j.LoggerFactory
5 |
6 | import com.netflix.zuul.ZuulFilter
7 |
8 | class PostFilter extends ZuulFilter{
9 |
10 | Logger log = LoggerFactory.getLogger(PostFilter.class);
11 |
12 | @Override
13 | String filterType() {
14 | return "post"
15 | }
16 |
17 | @Override
18 | int filterOrder() {
19 | return 2000
20 | }
21 |
22 | @Override
23 | boolean shouldFilter() {
24 | return true
25 | }
26 |
27 | @Override
28 | Object run() {
29 | log.info("this is a post filter aaaaaaa");
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-3/eureka-feign/src/main/java/com/didispace/service/ComputeClient.java:
--------------------------------------------------------------------------------
1 | package com.didispace.service;
2 |
3 | import org.springframework.cloud.netflix.feign.FeignClient;
4 | import org.springframework.web.bind.annotation.RequestMapping;
5 | import org.springframework.web.bind.annotation.RequestMethod;
6 | import org.springframework.web.bind.annotation.RequestParam;
7 |
8 | @FeignClient(value = "compute-service", fallback = ComputeClientHystrix.class)
9 | public interface ComputeClient {
10 |
11 | @RequestMapping(method = RequestMethod.GET, value = "/add")
12 | Integer add(@RequestParam(value = "a") Integer a, @RequestParam(value = "b") Integer b);
13 |
14 | }
--------------------------------------------------------------------------------
/spring_cloud_in_action/ribbon-consumer/src/main/java/com/didispace/web/ConsumerController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import org.springframework.beans.factory.annotation.Autowired;
4 | import org.springframework.web.bind.annotation.RequestMapping;
5 | import org.springframework.web.bind.annotation.RequestMethod;
6 | import org.springframework.web.bind.annotation.RestController;
7 |
8 | @RestController
9 | public class ConsumerController {
10 |
11 | @Autowired
12 | HelloService helloService;
13 |
14 | @RequestMapping(value = "/ribbon-consumer", method = RequestMethod.GET)
15 | public String helloConsumer() {
16 | return helloService.hello();
17 | }
18 |
19 | }
--------------------------------------------------------------------------------
/spring_cloud_in_action/zipkin-server-stream/src/main/java/com/didispace/ZipkinApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.sleuth.zipkin.stream.EnableZipkinStreamServer;
6 | import org.springframework.context.annotation.Bean;
7 | import zipkin.server.EnableZipkinServer;
8 | import zipkin.storage.SpanStore;
9 |
10 | @EnableZipkinStreamServer
11 | @SpringBootApplication
12 | public class ZipkinApplication {
13 |
14 | public static void main(String[] args) {
15 | SpringApplication.run(ZipkinApplication.class, args);
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/rabbitmq-hello/src/main/java/com/didispace/rabbit/Sender.java:
--------------------------------------------------------------------------------
1 | package com.didispace.rabbit;
2 |
3 | import org.springframework.amqp.core.AmqpTemplate;
4 | import org.springframework.amqp.rabbit.core.RabbitTemplate;
5 | import org.springframework.beans.factory.annotation.Autowired;
6 | import org.springframework.stereotype.Component;
7 |
8 | import java.util.Date;
9 |
10 | @Component
11 | public class Sender {
12 |
13 | @Autowired
14 | private AmqpTemplate rabbitTemplate;
15 |
16 | public void send() {
17 | String context = "hello " + new Date();
18 | System.out.println("Sender : " + context);
19 | this.rabbitTemplate.convertAndSend("hello", context);
20 | }
21 |
22 | }
--------------------------------------------------------------------------------
/2-Dalston版教程示例/turbine/src/main/java/com/didispace/TurbineApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.netflix.turbine.EnableTurbine;
7 | import org.springframework.context.annotation.Configuration;
8 |
9 | @Configuration
10 | @EnableAutoConfiguration
11 | @EnableTurbine
12 | @EnableDiscoveryClient
13 | public class TurbineApplication {
14 |
15 | public static void main(String[] args) {
16 | SpringApplication.run(TurbineApplication.class, args);
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/zipkin-server-stream-mysql/src/main/java/com/didispace/ZipkinApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.sleuth.zipkin.stream.EnableZipkinStreamServer;
6 | import org.springframework.context.annotation.Bean;
7 | import zipkin.server.EnableZipkinServer;
8 | import zipkin.storage.SpanStore;
9 |
10 | @EnableZipkinStreamServer
11 | @SpringBootApplication
12 | public class ZipkinApplication {
13 |
14 | public static void main(String[] args) {
15 | SpringApplication.run(ZipkinApplication.class, args);
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/Chapter1-1-2/eureka-feign/src/main/java/com/didispace/web/ConsumerController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import com.didispace.service.ComputeClient;
4 | import org.springframework.beans.factory.annotation.Autowired;
5 | import org.springframework.web.bind.annotation.RequestMapping;
6 | import org.springframework.web.bind.annotation.RequestMethod;
7 | import org.springframework.web.bind.annotation.RestController;
8 |
9 | @RestController
10 | public class ConsumerController {
11 |
12 | @Autowired
13 | ComputeClient computeClient;
14 |
15 | @RequestMapping(value = "/add", method = RequestMethod.GET)
16 | public Integer add() {
17 | return computeClient.add(10, 20);
18 | }
19 |
20 | }
--------------------------------------------------------------------------------
/Chapter1-1-3/eureka-feign/src/main/java/com/didispace/web/ConsumerController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import com.didispace.service.ComputeClient;
4 | import org.springframework.beans.factory.annotation.Autowired;
5 | import org.springframework.web.bind.annotation.RequestMapping;
6 | import org.springframework.web.bind.annotation.RequestMethod;
7 | import org.springframework.web.bind.annotation.RestController;
8 |
9 | @RestController
10 | public class ConsumerController {
11 |
12 | @Autowired
13 | ComputeClient computeClient;
14 |
15 | @RequestMapping(value = "/add", method = RequestMethod.GET)
16 | public Integer add() {
17 | return computeClient.add(10, 20);
18 | }
19 |
20 | }
--------------------------------------------------------------------------------
/spring_cloud_in_action/turbine/src/main/java/com/didispace/TurbineApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.netflix.turbine.EnableTurbine;
7 | import org.springframework.context.annotation.Configuration;
8 |
9 | @Configuration
10 | @EnableAutoConfiguration
11 | @EnableTurbine
12 | @EnableDiscoveryClient
13 | public class TurbineApplication {
14 |
15 | public static void main(String[] args) {
16 | SpringApplication.run(TurbineApplication.class, args);
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/hello-service-api/src/main/java/com/didispace/service/HelloService.java:
--------------------------------------------------------------------------------
1 | package com.didispace.service;
2 |
3 | import com.didispace.dto.User;
4 | import org.springframework.web.bind.annotation.*;
5 |
6 | @RequestMapping("/refactor")
7 | public interface HelloService {
8 |
9 | @RequestMapping(value = "/hello4", method = RequestMethod.GET)
10 | String hello(@RequestParam("name") String name) ;
11 |
12 | @RequestMapping(value = "/hello5", method = RequestMethod.GET)
13 | User hello(@RequestHeader("name") String name, @RequestHeader("age") Integer age);
14 |
15 | @RequestMapping(value = "/hello6", method = RequestMethod.POST)
16 | String hello(@RequestBody User user);
17 |
18 | }
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-2/eureka-feign/src/main/java/com/didispace/web/ConsumerController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import com.didispace.service.ComputeClient;
4 | import org.springframework.beans.factory.annotation.Autowired;
5 | import org.springframework.web.bind.annotation.RequestMapping;
6 | import org.springframework.web.bind.annotation.RequestMethod;
7 | import org.springframework.web.bind.annotation.RestController;
8 |
9 | @RestController
10 | public class ConsumerController {
11 |
12 | @Autowired
13 | ComputeClient computeClient;
14 |
15 | @RequestMapping(value = "/add", method = RequestMethod.GET)
16 | public Integer add() {
17 | return computeClient.add(10, 20);
18 | }
19 |
20 | }
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-3/eureka-feign/src/main/java/com/didispace/web/ConsumerController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import com.didispace.service.ComputeClient;
4 | import org.springframework.beans.factory.annotation.Autowired;
5 | import org.springframework.web.bind.annotation.RequestMapping;
6 | import org.springframework.web.bind.annotation.RequestMethod;
7 | import org.springframework.web.bind.annotation.RestController;
8 |
9 | @RestController
10 | public class ConsumerController {
11 |
12 | @Autowired
13 | ComputeClient computeClient;
14 |
15 | @RequestMapping(value = "/add", method = RequestMethod.GET)
16 | public Integer add() {
17 | return computeClient.add(10, 20);
18 | }
19 |
20 | }
--------------------------------------------------------------------------------
/2-Dalston版教程示例/turbine-amqp/src/main/java/com/didispace/TurbineApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.netflix.turbine.stream.EnableTurbineStream;
7 | import org.springframework.context.annotation.Configuration;
8 |
9 | @Configuration
10 | @EnableAutoConfiguration
11 | @EnableTurbineStream
12 | @EnableDiscoveryClient
13 | public class TurbineApplication {
14 |
15 | public static void main(String[] args) {
16 | SpringApplication.run(TurbineApplication.class, args);
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/Chapter1-1-5/api-gateway/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import com.didispace.filter.AccessFilter;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.SpringCloudApplication;
6 | import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
7 | import org.springframework.context.annotation.Bean;
8 |
9 | @EnableZuulProxy
10 | @SpringCloudApplication
11 | public class Application {
12 |
13 | public static void main(String[] args) {
14 | new SpringApplicationBuilder(Application.class).web(true).run(args);
15 | }
16 |
17 | @Bean
18 | public AccessFilter accessFilter() {
19 | return new AccessFilter();
20 | }
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/rabbitmq-hello/src/main/java/com/didispace/rabbit/Receiver.java:
--------------------------------------------------------------------------------
1 | package com.didispace.rabbit;
2 |
3 | import org.springframework.amqp.rabbit.annotation.RabbitHandler;
4 | import org.springframework.amqp.rabbit.annotation.RabbitListener;
5 | import org.springframework.cache.annotation.Cacheable;
6 | import org.springframework.stereotype.Component;
7 |
8 | import java.util.Date;
9 |
10 | /**
11 | * @author 翟永超
12 | * @create 2016/9/25.
13 | * @blog http://blog.didispace.com
14 | */
15 | @Component
16 | @RabbitListener(queues = "hello")
17 | public class Receiver {
18 |
19 | @RabbitHandler
20 | public void process(String hello) {
21 | System.out.println("Receiver : " + hello);
22 | }
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/turbine-amqp/src/main/java/com/didispace/TurbineApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.netflix.turbine.stream.EnableTurbineStream;
7 | import org.springframework.context.annotation.Configuration;
8 |
9 | @Configuration
10 | @EnableAutoConfiguration
11 | @EnableTurbineStream
12 | @EnableDiscoveryClient
13 | public class TurbineApplication {
14 |
15 | public static void main(String[] args) {
16 | SpringApplication.run(TurbineApplication.class, args);
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-5/api-gateway/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import com.didispace.filter.AccessFilter;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.SpringCloudApplication;
6 | import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
7 | import org.springframework.context.annotation.Bean;
8 |
9 | @EnableZuulProxy
10 | @SpringCloudApplication
11 | public class Application {
12 |
13 | public static void main(String[] args) {
14 | new SpringApplicationBuilder(Application.class).web(true).run(args);
15 | }
16 |
17 | @Bean
18 | public AccessFilter accessFilter() {
19 | return new AccessFilter();
20 | }
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/rabbitmq-hello/src/test/java/com/didispace/HelloApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import com.didispace.rabbit.Sender;
4 | import org.junit.Test;
5 | import org.junit.runner.RunWith;
6 | import org.springframework.beans.factory.annotation.Autowired;
7 | import org.springframework.boot.test.SpringApplicationConfiguration;
8 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
9 |
10 | @RunWith(SpringJUnit4ClassRunner.class)
11 | @SpringApplicationConfiguration(classes = HelloApplication.class)
12 | public class HelloApplicationTests {
13 |
14 | @Autowired
15 | private Sender sender;
16 |
17 | @Test
18 | public void hello() throws Exception {
19 | sender.send();
20 | }
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/eureka-consumer-ribbon/src/main/java/com/didispace/DcController.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.beans.factory.annotation.Autowired;
4 | import org.springframework.web.bind.annotation.GetMapping;
5 | import org.springframework.web.bind.annotation.RestController;
6 | import org.springframework.web.client.RestTemplate;
7 |
8 | /**
9 | * @author 翟永超
10 | * @create 2017/4/15.
11 | * @blog http://blog.didispace.com
12 | */
13 | @RestController
14 | public class DcController {
15 |
16 | @Autowired
17 | RestTemplate restTemplate;
18 |
19 | @GetMapping("/consumer")
20 | public String dc() {
21 | return restTemplate.getForObject("http://eureka-client/dc", String.class);
22 | }
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/consul-consumer/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.context.annotation.Bean;
7 | import org.springframework.web.client.RestTemplate;
8 |
9 | @EnableDiscoveryClient
10 | @SpringBootApplication
11 | public class Application {
12 |
13 | @Bean
14 | public RestTemplate restTemplate() {
15 | return new RestTemplate();
16 | }
17 |
18 | public static void main(String[] args) {
19 | new SpringApplicationBuilder(Application.class).web(true).run(args);
20 | }
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/eureka-consumer/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.context.annotation.Bean;
7 | import org.springframework.web.client.RestTemplate;
8 |
9 | @EnableDiscoveryClient
10 | @SpringBootApplication
11 | public class Application {
12 |
13 | @Bean
14 | public RestTemplate restTemplate() {
15 | return new RestTemplate();
16 | }
17 |
18 | public static void main(String[] args) {
19 | new SpringApplicationBuilder(Application.class).web(true).run(args);
20 | }
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/hello-service/src/main/java/com/didispace/web/RefactorHelloController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import com.didispace.dto.User;
4 | import com.didispace.service.HelloService;
5 | import org.springframework.web.bind.annotation.*;
6 |
7 | @RestController
8 | public class RefactorHelloController implements HelloService {
9 |
10 | @Override
11 | public String hello(@RequestParam("name") String name) {
12 | return "Hello " + name;
13 | }
14 |
15 | @Override
16 | public User hello(@RequestHeader("name") String name, @RequestHeader("age") Integer age) {
17 | return new User(name, age);
18 | }
19 |
20 | @Override
21 | public String hello(@RequestBody User user) {
22 | return "Hello "+ user.getName() + ", " + user.getAge();
23 | }
24 |
25 | }
--------------------------------------------------------------------------------
/Chapter1-1-2/eureka-ribbon/src/main/java/com/didispace/web/ConsumerController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import org.springframework.beans.factory.annotation.Autowired;
4 | import org.springframework.web.bind.annotation.RequestMapping;
5 | import org.springframework.web.bind.annotation.RequestMethod;
6 | import org.springframework.web.bind.annotation.RestController;
7 | import org.springframework.web.client.RestTemplate;
8 |
9 | @RestController
10 | public class ConsumerController {
11 |
12 | @Autowired
13 | RestTemplate restTemplate;
14 |
15 | @RequestMapping(value = "/add", method = RequestMethod.GET)
16 | public String add() {
17 | return restTemplate.getForEntity("http://COMPUTE-SERVICE/add?a=10&b=20", String.class).getBody();
18 | }
19 |
20 |
21 | }
--------------------------------------------------------------------------------
/spring_cloud_in_action/hello-service/src/main/java/com/didispace/indicator/RocketMQHealthIndicator.java:
--------------------------------------------------------------------------------
1 | package com.didispace.indicator;
2 |
3 | import org.springframework.boot.actuate.health.Health;
4 | import org.springframework.boot.actuate.health.HealthIndicator;
5 | import org.springframework.stereotype.Component;
6 |
7 | @Component
8 | public class RocketMQHealthIndicator implements HealthIndicator {
9 |
10 | @Override
11 | public Health health() {
12 | int errorCode = check();
13 | if (errorCode != 0) {
14 | return Health.down().withDetail("Error Code", errorCode).build();
15 | }
16 | return Health.up().build();
17 | }
18 |
19 | private int check() {
20 | // perform some specific health check
21 | return 0;
22 | }
23 |
24 | }
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-2/eureka-ribbon/src/main/java/com/didispace/web/ConsumerController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import org.springframework.beans.factory.annotation.Autowired;
4 | import org.springframework.web.bind.annotation.RequestMapping;
5 | import org.springframework.web.bind.annotation.RequestMethod;
6 | import org.springframework.web.bind.annotation.RestController;
7 | import org.springframework.web.client.RestTemplate;
8 |
9 | @RestController
10 | public class ConsumerController {
11 |
12 | @Autowired
13 | RestTemplate restTemplate;
14 |
15 | @RequestMapping(value = "/add", method = RequestMethod.GET)
16 | public String add() {
17 | return restTemplate.getForEntity("http://COMPUTE-SERVICE/add?a=10&b=20", String.class).getBody();
18 | }
19 |
20 |
21 | }
--------------------------------------------------------------------------------
/Chapter1-1-3/eureka-ribbon/src/main/java/com/didispace/service/ComputeService.java:
--------------------------------------------------------------------------------
1 | package com.didispace.service;
2 |
3 | import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
4 | import org.springframework.beans.factory.annotation.Autowired;
5 | import org.springframework.stereotype.Service;
6 | import org.springframework.web.client.RestTemplate;
7 |
8 | @Service
9 | public class ComputeService {
10 |
11 | @Autowired
12 | RestTemplate restTemplate;
13 |
14 | @HystrixCommand(fallbackMethod = "addServiceFallback")
15 | public String addService() {
16 | return restTemplate.getForEntity("http://COMPUTE-SERVICE/add?a=10&b=20", String.class).getBody();
17 | }
18 |
19 | public String addServiceFallback() {
20 | return "error";
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/Chapter1-1-4/config-client/src/main/java/com/didispace/web/TestController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import org.springframework.beans.factory.annotation.Value;
4 | import org.springframework.cloud.context.config.annotation.RefreshScope;
5 | import org.springframework.web.bind.annotation.RequestMapping;
6 | import org.springframework.web.bind.annotation.RestController;
7 |
8 | @RefreshScope
9 | @RestController
10 | class TestController {
11 |
12 | @Value("${from}")
13 | private String from;
14 |
15 | @RequestMapping("/from")
16 | public String from() {
17 |
18 | return this.from;
19 | }
20 |
21 | public void setFrom(String from) {
22 | this.from = from;
23 | }
24 |
25 | public String getFrom() {
26 | return from;
27 | }
28 |
29 | }
--------------------------------------------------------------------------------
/Chapter1-1-7/config-client-eureka/src/main/java/com/didispace/web/TestController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import org.springframework.beans.factory.annotation.Value;
4 | import org.springframework.cloud.context.config.annotation.RefreshScope;
5 | import org.springframework.web.bind.annotation.RequestMapping;
6 | import org.springframework.web.bind.annotation.RestController;
7 |
8 | @RefreshScope
9 | @RestController
10 | public class TestController {
11 |
12 | @Value("${from}")
13 | private String from;
14 |
15 | @RequestMapping("/from")
16 | public String from() {
17 | return this.from;
18 | }
19 |
20 | public void setFrom(String from) {
21 | this.from = from;
22 | }
23 |
24 | public String getFrom() {
25 | return from;
26 | }
27 |
28 | }
--------------------------------------------------------------------------------
/Chapter1-1-8/config-client-eureka/src/main/java/com/didispace/web/TestController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import org.springframework.beans.factory.annotation.Value;
4 | import org.springframework.cloud.context.config.annotation.RefreshScope;
5 | import org.springframework.web.bind.annotation.RequestMapping;
6 | import org.springframework.web.bind.annotation.RestController;
7 |
8 | @RefreshScope
9 | @RestController
10 | public class TestController {
11 |
12 | @Value("${from}")
13 | private String from;
14 |
15 | @RequestMapping("/from")
16 | public String from() {
17 | return this.from;
18 | }
19 |
20 | public void setFrom(String from) {
21 | this.from = from;
22 | }
23 |
24 | public String getFrom() {
25 | return from;
26 | }
27 |
28 | }
--------------------------------------------------------------------------------
/Chapter1-1-7/config-client-eureka-kafka/src/main/java/com/didispace/web/TestController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import org.springframework.beans.factory.annotation.Value;
4 | import org.springframework.cloud.context.config.annotation.RefreshScope;
5 | import org.springframework.web.bind.annotation.RequestMapping;
6 | import org.springframework.web.bind.annotation.RestController;
7 |
8 | @RefreshScope
9 | @RestController
10 | public class TestController {
11 |
12 | @Value("${from}")
13 | private String from;
14 |
15 | @RequestMapping("/from")
16 | public String from() {
17 | return this.from;
18 | }
19 |
20 | public void setFrom(String from) {
21 | this.from = from;
22 | }
23 |
24 | public String getFrom() {
25 | return from;
26 | }
27 |
28 | }
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-client/src/main/java/com/didispace/web/TestController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import org.springframework.beans.factory.annotation.Value;
4 | import org.springframework.cloud.context.config.annotation.RefreshScope;
5 | import org.springframework.web.bind.annotation.RequestMapping;
6 | import org.springframework.web.bind.annotation.RestController;
7 |
8 | @RefreshScope
9 | @RestController
10 | public class TestController {
11 |
12 | @Value("${from}")
13 | private String from;
14 |
15 | @RequestMapping("/from")
16 | public String from() {
17 | return this.from;
18 | }
19 |
20 | public void setFrom(String from) {
21 | this.from = from;
22 | }
23 |
24 | public String getFrom() {
25 | return from;
26 | }
27 |
28 | }
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-3/eureka-ribbon/src/main/java/com/didispace/service/ComputeService.java:
--------------------------------------------------------------------------------
1 | package com.didispace.service;
2 |
3 | import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
4 | import org.springframework.beans.factory.annotation.Autowired;
5 | import org.springframework.stereotype.Service;
6 | import org.springframework.web.client.RestTemplate;
7 |
8 | @Service
9 | public class ComputeService {
10 |
11 | @Autowired
12 | RestTemplate restTemplate;
13 |
14 | @HystrixCommand(fallbackMethod = "addServiceFallback")
15 | public String addService() {
16 | return restTemplate.getForEntity("http://COMPUTE-SERVICE/add?a=10&b=20", String.class).getBody();
17 | }
18 |
19 | public String addServiceFallback() {
20 | return "error";
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-4/config-client/src/main/java/com/didispace/web/TestController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import org.springframework.beans.factory.annotation.Value;
4 | import org.springframework.cloud.context.config.annotation.RefreshScope;
5 | import org.springframework.web.bind.annotation.RequestMapping;
6 | import org.springframework.web.bind.annotation.RestController;
7 |
8 | @RefreshScope
9 | @RestController
10 | class TestController {
11 |
12 | @Value("${from}")
13 | private String from;
14 |
15 | @RequestMapping("/from")
16 | public String from() {
17 |
18 | return this.from;
19 | }
20 |
21 | public void setFrom(String from) {
22 | this.from = from;
23 | }
24 |
25 | public String getFrom() {
26 | return from;
27 | }
28 |
29 | }
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-client-eureka/src/main/java/com/didispace/web/TestController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import org.springframework.beans.factory.annotation.Value;
4 | import org.springframework.cloud.context.config.annotation.RefreshScope;
5 | import org.springframework.web.bind.annotation.RequestMapping;
6 | import org.springframework.web.bind.annotation.RestController;
7 |
8 | @RefreshScope
9 | @RestController
10 | public class TestController {
11 |
12 | @Value("${from}")
13 | private String from;
14 |
15 | @RequestMapping("/from")
16 | public String from() {
17 | return this.from;
18 | }
19 |
20 | public void setFrom(String from) {
21 | this.from = from;
22 | }
23 |
24 | public String getFrom() {
25 | return from;
26 | }
27 |
28 | }
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-7/config-client-eureka/src/main/java/com/didispace/web/TestController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import org.springframework.beans.factory.annotation.Value;
4 | import org.springframework.cloud.context.config.annotation.RefreshScope;
5 | import org.springframework.web.bind.annotation.RequestMapping;
6 | import org.springframework.web.bind.annotation.RestController;
7 |
8 | @RefreshScope
9 | @RestController
10 | public class TestController {
11 |
12 | @Value("${from}")
13 | private String from;
14 |
15 | @RequestMapping("/from")
16 | public String from() {
17 | return this.from;
18 | }
19 |
20 | public void setFrom(String from) {
21 | this.from = from;
22 | }
23 |
24 | public String getFrom() {
25 | return from;
26 | }
27 |
28 | }
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-8/config-client-eureka/src/main/java/com/didispace/web/TestController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import org.springframework.beans.factory.annotation.Value;
4 | import org.springframework.cloud.context.config.annotation.RefreshScope;
5 | import org.springframework.web.bind.annotation.RequestMapping;
6 | import org.springframework.web.bind.annotation.RestController;
7 |
8 | @RefreshScope
9 | @RestController
10 | public class TestController {
11 |
12 | @Value("${from}")
13 | private String from;
14 |
15 | @RequestMapping("/from")
16 | public String from() {
17 | return this.from;
18 | }
19 |
20 | public void setFrom(String from) {
21 | this.from = from;
22 | }
23 |
24 | public String getFrom() {
25 | return from;
26 | }
27 |
28 | }
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-client-eureka-kafka/src/main/java/com/didispace/web/TestController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import org.springframework.beans.factory.annotation.Value;
4 | import org.springframework.cloud.context.config.annotation.RefreshScope;
5 | import org.springframework.web.bind.annotation.RequestMapping;
6 | import org.springframework.web.bind.annotation.RestController;
7 |
8 | @RefreshScope
9 | @RestController
10 | public class TestController {
11 |
12 | @Value("${from}")
13 | private String from;
14 |
15 | @RequestMapping("/from")
16 | public String from() {
17 | return this.from;
18 | }
19 |
20 | public void setFrom(String from) {
21 | this.from = from;
22 | }
23 |
24 | public String getFrom() {
25 | return from;
26 | }
27 |
28 | }
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-7/config-client-eureka-kafka/src/main/java/com/didispace/web/TestController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import org.springframework.beans.factory.annotation.Value;
4 | import org.springframework.cloud.context.config.annotation.RefreshScope;
5 | import org.springframework.web.bind.annotation.RequestMapping;
6 | import org.springframework.web.bind.annotation.RestController;
7 |
8 | @RefreshScope
9 | @RestController
10 | public class TestController {
11 |
12 | @Value("${from}")
13 | private String from;
14 |
15 | @RequestMapping("/from")
16 | public String from() {
17 | return this.from;
18 | }
19 |
20 | public void setFrom(String from) {
21 | this.from = from;
22 | }
23 |
24 | public String getFrom() {
25 | return from;
26 | }
27 |
28 | }
--------------------------------------------------------------------------------
/Chapter1-1-2/eureka-ribbon/src/main/java/com/didispace/RibbonApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.client.loadbalancer.LoadBalanced;
7 | import org.springframework.context.annotation.Bean;
8 | import org.springframework.web.client.RestTemplate;
9 |
10 | @SpringBootApplication
11 | @EnableDiscoveryClient
12 | public class RibbonApplication {
13 |
14 | @Bean
15 | @LoadBalanced
16 | RestTemplate restTemplate() {
17 | return new RestTemplate();
18 | }
19 |
20 | public static void main(String[] args) {
21 | SpringApplication.run(RibbonApplication.class, args);
22 | }
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/config-client-eureka-rabbit/src/main/java/com/didispace/web/TestController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import org.springframework.beans.factory.annotation.Value;
4 | import org.springframework.cloud.context.config.annotation.RefreshScope;
5 | import org.springframework.web.bind.annotation.RequestMapping;
6 | import org.springframework.web.bind.annotation.RestController;
7 |
8 | @RefreshScope
9 | @RestController
10 | public class TestController {
11 |
12 | @Value("${from}")
13 | private String from;
14 |
15 | @RequestMapping("/from")
16 | public String from() {
17 | return this.from;
18 | }
19 |
20 | public void setFrom(String from) {
21 | this.from = from;
22 | }
23 |
24 | public String getFrom() {
25 | return from;
26 | }
27 |
28 | }
--------------------------------------------------------------------------------
/spring_cloud_in_action/api-gateway-dynamic-filter/src/main/java/com/didispace/FilterConfiguration.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.context.properties.ConfigurationProperties;
4 |
5 | /**
6 | * @author 翟永超
7 | * @create 2016/12/11.
8 | * @blog http://blog.didispace.com
9 | */
10 | @ConfigurationProperties("zuul.filter")
11 | public class FilterConfiguration {
12 |
13 | private String root;
14 | private Integer interval;
15 |
16 | public String getRoot() {
17 | return root;
18 | }
19 |
20 | public void setRoot(String root) {
21 | this.root = root;
22 | }
23 |
24 | public Integer getInterval() {
25 | return interval;
26 | }
27 |
28 | public void setInterval(Integer interval) {
29 | this.interval = interval;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/feign-consumer/src/main/java/com/didispace/ConsumerApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import feign.Logger;
4 | import org.springframework.boot.SpringApplication;
5 | import org.springframework.boot.autoconfigure.SpringBootApplication;
6 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
7 | import org.springframework.cloud.netflix.feign.EnableFeignClients;
8 | import org.springframework.context.annotation.Bean;
9 |
10 | @EnableFeignClients
11 | @EnableDiscoveryClient
12 | @SpringBootApplication
13 | public class ConsumerApplication {
14 |
15 | // @Bean
16 | // Logger.Level feignLoggerLevel() {
17 | // return Logger.Level.FULL;
18 | // }
19 |
20 | public static void main(String[] args) {
21 | SpringApplication.run(ConsumerApplication.class, args);
22 | }
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/stream-consumer/src/main/java/com/didispace/SinkReceiver1.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.slf4j.Logger;
4 | import org.slf4j.LoggerFactory;
5 | import org.springframework.cloud.stream.annotation.EnableBinding;
6 | import org.springframework.cloud.stream.annotation.StreamListener;
7 | import org.springframework.cloud.stream.messaging.Sink;
8 |
9 | /**
10 | * 快速入门
11 | *
12 | * @author 翟永超
13 | * @create 2016/11/8.
14 | * @blog http://blog.didispace.com
15 | */
16 | //@EnableBinding(value = {Sink.class})
17 | public class SinkReceiver1 {
18 |
19 | private static Logger logger = LoggerFactory.getLogger(HelloApplication.class);
20 |
21 | @StreamListener(Sink.INPUT)
22 | public void receive(Object payload) {
23 | logger.info("Received: " + payload);
24 | }
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/stream-hello/src/main/java/com/didispace/aggregate/Sink/SinkApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace.aggregate.Sink;
2 |
3 | import org.slf4j.Logger;
4 | import org.slf4j.LoggerFactory;
5 | import org.springframework.boot.autoconfigure.SpringBootApplication;
6 | import org.springframework.cloud.stream.annotation.EnableBinding;
7 | import org.springframework.cloud.stream.messaging.Sink;
8 | import org.springframework.integration.annotation.ServiceActivator;
9 |
10 | @SpringBootApplication
11 | @EnableBinding(Sink.class)
12 | public class SinkApplication {
13 |
14 | private static Logger logger = LoggerFactory.getLogger(SinkApplication.class);
15 |
16 | @ServiceActivator(inputChannel=Sink.INPUT)
17 | public void loggerSink(Object payload) {
18 | logger.info("Received: " + payload);
19 | }
20 | }
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-2/eureka-ribbon/src/main/java/com/didispace/RibbonApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.client.loadbalancer.LoadBalanced;
7 | import org.springframework.context.annotation.Bean;
8 | import org.springframework.web.client.RestTemplate;
9 |
10 | @SpringBootApplication
11 | @EnableDiscoveryClient
12 | public class RibbonApplication {
13 |
14 | @Bean
15 | @LoadBalanced
16 | RestTemplate restTemplate() {
17 | return new RestTemplate();
18 | }
19 |
20 | public static void main(String[] args) {
21 | SpringApplication.run(RibbonApplication.class, args);
22 | }
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/api-gateway-exception/src/main/java/com/didispace/filter/DidiErrorAttributes.java:
--------------------------------------------------------------------------------
1 | package com.didispace.filter;
2 |
3 | import org.springframework.boot.autoconfigure.web.DefaultErrorAttributes;
4 | import org.springframework.web.context.request.RequestAttributes;
5 |
6 | import java.util.Map;
7 |
8 | /**
9 | * @author 翟永超
10 | * @create 2016/12/15.
11 | * @blog http://blog.didispace.com
12 | */
13 | public class DidiErrorAttributes extends DefaultErrorAttributes {
14 |
15 | @Override
16 | public Map getErrorAttributes (
17 | RequestAttributes requestAttributes, boolean includeStackTrace){
18 | Map result = super.getErrorAttributes(requestAttributes, includeStackTrace);
19 | result.remove("exception");
20 | return result;
21 | }
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/feign-consumer/src/main/java/com/didispace/web/HelloService.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import org.springframework.cloud.netflix.feign.FeignClient;
4 | import org.springframework.web.bind.annotation.*;
5 |
6 | @FeignClient(name="HELLO-SERVICE", fallback = HelloServiceFallback.class)
7 | public interface HelloService {
8 |
9 | @RequestMapping("/hello")
10 | String hello();
11 |
12 | @RequestMapping(value = "/hello1", method = RequestMethod.GET)
13 | String hello(@RequestParam("name") String name) ;
14 |
15 | @RequestMapping(value = "/hello2", method = RequestMethod.GET)
16 | User hello(@RequestHeader("name") String name, @RequestHeader("age") Integer age);
17 |
18 | @RequestMapping(value = "/hello3", method = RequestMethod.POST)
19 | String hello(@RequestBody User user);
20 |
21 | }
--------------------------------------------------------------------------------
/2-Dalston版教程示例/eureka-consumer-ribbon/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.client.loadbalancer.LoadBalanced;
7 | import org.springframework.context.annotation.Bean;
8 | import org.springframework.web.client.RestTemplate;
9 |
10 | @EnableDiscoveryClient
11 | @SpringBootApplication
12 | public class Application {
13 |
14 | @Bean
15 | @LoadBalanced
16 | public RestTemplate restTemplate() {
17 | return new RestTemplate();
18 | }
19 |
20 | public static void main(String[] args) {
21 | new SpringApplicationBuilder(Application.class).web(true).run(args);
22 | }
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/feign-consumer/src/main/java/com/didispace/web/User.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | /**
4 | * Created by Administrator on 2016/9/16.
5 | */
6 | public class User {
7 |
8 | private String name;
9 | private Integer age;
10 |
11 | public User() {}
12 |
13 | public User(String name, Integer age) {
14 | this.name = name;
15 | this.age = age;
16 | }
17 |
18 | public String getName() {
19 | return name;
20 | }
21 |
22 | public void setName(String name) {
23 | this.name = name;
24 | }
25 |
26 | public Integer getAge() {
27 | return age;
28 | }
29 |
30 | public void setAge(Integer age) {
31 | this.age = age;
32 | }
33 |
34 | @Override
35 | public String toString() {
36 | return "name=" + name + ", age=" +age;
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/consul-client/src/main/java/com/didispace/DcController.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.beans.factory.annotation.Autowired;
4 | import org.springframework.cloud.client.discovery.DiscoveryClient;
5 | import org.springframework.stereotype.Controller;
6 | import org.springframework.web.bind.annotation.GetMapping;
7 | import org.springframework.web.bind.annotation.RestController;
8 |
9 | /**
10 | * @author 翟永超
11 | * @create 2017/4/15.
12 | * @blog http://blog.didispace.com
13 | */
14 | @RestController
15 | public class DcController {
16 |
17 | @Autowired
18 | DiscoveryClient discoveryClient;
19 |
20 | @GetMapping("/dc")
21 | public String dc() {
22 | String services = "Services: " + discoveryClient.getServices();
23 | System.out.println(services);
24 | return services;
25 | }
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/eureka-client/src/main/java/com/didispace/DcController.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.beans.factory.annotation.Autowired;
4 | import org.springframework.cloud.client.discovery.DiscoveryClient;
5 | import org.springframework.stereotype.Controller;
6 | import org.springframework.web.bind.annotation.GetMapping;
7 | import org.springframework.web.bind.annotation.RestController;
8 |
9 | /**
10 | * @author 翟永超
11 | * @create 2017/4/15.
12 | * @blog http://blog.didispace.com
13 | */
14 | @RestController
15 | public class DcController {
16 |
17 | @Autowired
18 | DiscoveryClient discoveryClient;
19 |
20 | @GetMapping("/dc")
21 | public String dc() {
22 | String services = "Services: " + discoveryClient.getServices();
23 | System.out.println(services);
24 | return services;
25 | }
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/zipkin-server-stream-mysql/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=zipkin-server-stream
2 | server.port=9411
3 |
4 | spring.rabbitmq.host=localhost
5 | spring.rabbitmq.port=5672
6 | spring.rabbitmq.username=springcloud
7 | spring.rabbitmq.password=123456
8 |
9 | spring.datasource.schema=classpath:/mysql.sql
10 | spring.datasource.url=jdbc:mysql://localhost:3306/zipkin
11 | spring.datasource.username=root
12 | spring.datasource.password=123456
13 | spring.datasrouce.continueOnError=true
14 | spring.datasrouce.initialize=true
15 | #spring.datasource.driver-class-name=com.mysql.jdbc.Driver
16 |
17 | #spring.sleuth.enabled=false
18 |
19 | zipkin.storage.type=mysql
20 | #zipkin.storage.type.mysql.username=root
21 | #zipkin.storage.type.mysql.password=123456
22 | #eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
23 |
24 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/eureka-feign-client/src/main/java/com/didispace/api/impl/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace.api.impl;
2 |
3 | import com.didispace.api.HelloService;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.boot.builder.SpringApplicationBuilder;
6 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
7 | import org.springframework.web.bind.annotation.RestController;
8 |
9 | @EnableDiscoveryClient
10 | @SpringBootApplication
11 | public class Application {
12 |
13 | @RestController
14 | class HelloController implements HelloService {
15 |
16 | @Override
17 | public String hello(String name) {
18 | return "hello " + name;
19 | }
20 |
21 | }
22 |
23 | public static void main(String[] args) {
24 | new SpringApplicationBuilder(Application.class).web(true).run(args);
25 | }
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/hello-service-api/src/main/java/com/didispace/dto/User.java:
--------------------------------------------------------------------------------
1 | package com.didispace.dto;
2 |
3 | /**
4 | * Created by Administrator on 2016/9/16.
5 | */
6 | public class User {
7 |
8 | private String name;
9 | private Integer age;
10 |
11 | public User() {
12 | }
13 |
14 | public User(String name, Integer age) {
15 | this.name = name;
16 | this.age = age;
17 | }
18 |
19 | public String getName() {
20 | return name;
21 | }
22 |
23 | public void setName(String name) {
24 | this.name = name;
25 | }
26 |
27 | public Integer getAge() {
28 | return age;
29 | }
30 |
31 | public void setAge(Integer age) {
32 | this.age = age;
33 | }
34 |
35 | @Override
36 | public String toString() {
37 | return "name=" + name + ", age=" +age;
38 | }
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/hello-service/src/main/java/com/didispace/web/User.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | /**
4 | * Created by Administrator on 2016/9/16.
5 | */
6 | public class User {
7 |
8 | private String name;
9 | private Integer age;
10 |
11 | public User() {
12 | }
13 |
14 | public User(String name, Integer age) {
15 | this.name = name;
16 | this.age = age;
17 | }
18 |
19 | public String getName() {
20 | return name;
21 | }
22 |
23 | public void setName(String name) {
24 | this.name = name;
25 | }
26 |
27 | public Integer getAge() {
28 | return age;
29 | }
30 |
31 | public void setAge(Integer age) {
32 | this.age = age;
33 | }
34 |
35 | @Override
36 | public String toString() {
37 | return "name=" + name + ", age=" +age;
38 | }
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/ribbon-consumer/src/main/java/com/didispace/web/User.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | /**
4 | * Created by Administrator on 2016/9/16.
5 | */
6 | public class User {
7 |
8 | private String name;
9 | private Integer age;
10 |
11 | public User() {
12 | }
13 |
14 | public User(String name, Integer age) {
15 | this.name = name;
16 | this.age = age;
17 | }
18 |
19 | public String getName() {
20 | return name;
21 | }
22 |
23 | public void setName(String name) {
24 | this.name = name;
25 | }
26 |
27 | public Integer getAge() {
28 | return age;
29 | }
30 |
31 | public void setAge(Integer age) {
32 | this.age = age;
33 | }
34 |
35 | @Override
36 | public String toString() {
37 | return "name=" + name + ", age=" +age;
38 | }
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/Chapter1-1-3/eureka-ribbon/src/main/java/com/didispace/web/ConsumerController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import com.didispace.service.ComputeService;
4 | import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
5 | import org.springframework.beans.factory.annotation.Autowired;
6 | import org.springframework.web.bind.annotation.RequestMapping;
7 | import org.springframework.web.bind.annotation.RequestMethod;
8 | import org.springframework.web.bind.annotation.RestController;
9 | import org.springframework.web.client.RestTemplate;
10 |
11 | import java.util.Map;
12 |
13 | @RestController
14 | public class ConsumerController {
15 |
16 | @Autowired
17 | private ComputeService computeService;
18 |
19 | @RequestMapping(value = "/add", method = RequestMethod.GET)
20 | public String add() {
21 | return computeService.addService();
22 | }
23 |
24 | }
--------------------------------------------------------------------------------
/spring_cloud_in_action/stream-producer/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | spring.application.name=rabbitmq-hello-2
2 | server.port=8002
3 |
4 | # Topic
5 | #spring.cloud.stream.bindings.input.destination=output
6 | #spring.cloud.stream.bindings.output.destination=input
7 | spring.cloud.stream.bindings.input.content-type=application/json
8 | spring.cloud.stream.bindings.output.content-type=application/json
9 |
10 | # RabbitMQ
11 | #spring.rabbitmq.host=localhost
12 | #spring.rabbitmq.port=5672
13 | #spring.rabbitmq.username=springcloud
14 | #spring.rabbitmq.password=123456
15 |
16 | # Comsumer Group:input
17 | #spring.cloud.stream.bindings.input.group=Service-A
18 |
19 | # Partition
20 | spring.cloud.stream.bindings.output.destination=greetings
21 | spring.cloud.stream.bindings.output.producer.partitionKeyExpression=payload
22 | spring.cloud.stream.bindings.output.producer.partitionCount=2
23 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-3/eureka-ribbon/src/main/java/com/didispace/web/ConsumerController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import com.didispace.service.ComputeService;
4 | import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
5 | import org.springframework.beans.factory.annotation.Autowired;
6 | import org.springframework.web.bind.annotation.RequestMapping;
7 | import org.springframework.web.bind.annotation.RequestMethod;
8 | import org.springframework.web.bind.annotation.RestController;
9 | import org.springframework.web.client.RestTemplate;
10 |
11 | import java.util.Map;
12 |
13 | @RestController
14 | public class ConsumerController {
15 |
16 | @Autowired
17 | private ComputeService computeService;
18 |
19 | @RequestMapping(value = "/add", method = RequestMethod.GET)
20 | public String add() {
21 | return computeService.addService();
22 | }
23 |
24 | }
--------------------------------------------------------------------------------
/Chapter1-1-3/eureka-ribbon/src/main/java/com/didispace/RibbonApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
6 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
7 | import org.springframework.cloud.client.loadbalancer.LoadBalanced;
8 | import org.springframework.context.annotation.Bean;
9 | import org.springframework.web.client.RestTemplate;
10 |
11 | @SpringBootApplication
12 | @EnableDiscoveryClient
13 | @EnableCircuitBreaker
14 | public class RibbonApplication {
15 |
16 | @Bean
17 | @LoadBalanced
18 | RestTemplate restTemplate() {
19 | return new RestTemplate();
20 | }
21 |
22 | public static void main(String[] args) {
23 | SpringApplication.run(RibbonApplication.class, args);
24 | }
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/ribbon-consumer/src/main/java/com/didispace/ConsumerApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
6 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
7 | import org.springframework.cloud.client.loadbalancer.LoadBalanced;
8 | import org.springframework.context.annotation.Bean;
9 | import org.springframework.web.client.RestTemplate;
10 |
11 | @EnableCircuitBreaker
12 | @EnableDiscoveryClient
13 | @SpringBootApplication
14 | public class ConsumerApplication {
15 |
16 | @Bean
17 | @LoadBalanced
18 | RestTemplate restTemplate() {
19 | return new RestTemplate();
20 | }
21 | public static void main(String[] args) {
22 | SpringApplication.run(ConsumerApplication.class, args);
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-3/eureka-ribbon/src/main/java/com/didispace/RibbonApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
6 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
7 | import org.springframework.cloud.client.loadbalancer.LoadBalanced;
8 | import org.springframework.context.annotation.Bean;
9 | import org.springframework.web.client.RestTemplate;
10 |
11 | @SpringBootApplication
12 | @EnableDiscoveryClient
13 | @EnableCircuitBreaker
14 | public class RibbonApplication {
15 |
16 | @Bean
17 | @LoadBalanced
18 | RestTemplate restTemplate() {
19 | return new RestTemplate();
20 | }
21 |
22 | public static void main(String[] args) {
23 | SpringApplication.run(RibbonApplication.class, args);
24 | }
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/api-gateway-exception/src/main/java/com/didispace/filter/DidiFilterProcessor.java:
--------------------------------------------------------------------------------
1 | package com.didispace.filter;
2 |
3 | import com.netflix.zuul.FilterProcessor;
4 | import com.netflix.zuul.ZuulFilter;
5 | import com.netflix.zuul.context.RequestContext;
6 | import com.netflix.zuul.exception.ZuulException;
7 |
8 | /**
9 | * @author 翟永超
10 | * @create 2016/12/15.
11 | * @blog http://blog.didispace.com
12 | */
13 | public class DidiFilterProcessor extends FilterProcessor {
14 |
15 | @Override
16 | public Object processZuulFilter(ZuulFilter filter) throws ZuulException {
17 | try {
18 | return super.processZuulFilter(filter);
19 | } catch (ZuulException e) {
20 | RequestContext ctx = RequestContext.getCurrentContext();
21 | ctx.set("failed.exception", e);
22 | ctx.set("failed.filter", filter);
23 | throw e;
24 | }
25 | }
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/hystrix-collapser-consumer/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 | import org.springframework.cloud.client.loadbalancer.LoadBalanced;
7 | import org.springframework.cloud.netflix.hystrix.EnableHystrix;
8 | import org.springframework.context.annotation.Bean;
9 | import org.springframework.web.client.RestTemplate;
10 |
11 | @EnableHystrix
12 | @EnableDiscoveryClient
13 | @SpringBootApplication
14 | public class Application {
15 |
16 | @Bean
17 | @LoadBalanced
18 | public RestTemplate restTemplate() {
19 | return new RestTemplate();
20 | }
21 |
22 | public static void main(String[] args) {
23 | new SpringApplicationBuilder(Application.class).web(true).run(args);
24 | }
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/api-gateway-dynamic-filter/filter/pre/PreFilter.groovy:
--------------------------------------------------------------------------------
1 | package com.didispace.filter.pre
2 |
3 | import org.slf4j.Logger
4 | import org.slf4j.LoggerFactory;
5 |
6 | import javax.servlet.http.HttpServletRequest;
7 |
8 | import com.netflix.zuul.ZuulFilter;
9 | import com.netflix.zuul.context.RequestContext;
10 |
11 | class PreFilter extends ZuulFilter {
12 |
13 | Logger log = LoggerFactory.getLogger(PreFilter.class)
14 |
15 | @Override
16 | String filterType() {
17 | return "pre"
18 | }
19 |
20 | @Override
21 | int filterOrder() {
22 | return 1000
23 | }
24 |
25 | @Override
26 | boolean shouldFilter() {
27 | return true
28 | }
29 |
30 | @Override
31 | Object run() {
32 | HttpServletRequest request = RequestContext.getCurrentContext().getRequest()
33 | log.info("this is a pre filter: Send {} request to {}", request.getMethod(), request.getRequestURL().toString())
34 | return null
35 | }
36 |
37 | }
--------------------------------------------------------------------------------
/spring_cloud_in_action/stream-consumer/src/main/java/com/didispace/User.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import java.io.Serializable;
4 |
5 | /**
6 | * @author 翟永超
7 | * @create 2016/11/13.
8 | * @blog http://blog.didispace.com
9 | */
10 | public class User implements Serializable {
11 |
12 | private String name;
13 | private Integer age;
14 |
15 | public User() {
16 |
17 | }
18 |
19 | public User(String name, Integer age) {
20 | this.name = name;
21 | this.age = age;
22 | }
23 |
24 | public String getName() {
25 | return name;
26 | }
27 |
28 | public void setName(String name) {
29 | this.name = name;
30 | }
31 |
32 | public Integer getAge() {
33 | return age;
34 | }
35 |
36 | public void setAge(Integer age) {
37 | this.age = age;
38 | }
39 |
40 | @Override
41 | public String toString() {
42 | return "name=" + name + ", age=" + age;
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/stream-producer/src/main/java/com/didispace/User.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import java.io.Serializable;
4 |
5 | /**
6 | * @author 翟永超
7 | * @create 2016/11/13.
8 | * @blog http://blog.didispace.com
9 | */
10 | public class User implements Serializable {
11 |
12 | private String name;
13 | private Integer age;
14 |
15 | public User() {
16 |
17 | }
18 |
19 | public User(String name, Integer age) {
20 | this.name = name;
21 | this.age = age;
22 | }
23 |
24 | public String getName() {
25 | return name;
26 | }
27 |
28 | public void setName(String name) {
29 | this.name = name;
30 | }
31 |
32 | public Integer getAge() {
33 | return age;
34 | }
35 |
36 | public void setAge(Integer age) {
37 | this.age = age;
38 | }
39 |
40 | @Override
41 | public String toString() {
42 | return "name=" + name + ", age=" + age;
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/api-gateway-consul/filter/pre/PreFilter.groovy:
--------------------------------------------------------------------------------
1 | package com.didispace.filter.pre
2 |
3 | import org.slf4j.Logger
4 | import org.slf4j.LoggerFactory;
5 |
6 | import javax.servlet.http.HttpServletRequest;
7 |
8 | import com.netflix.zuul.ZuulFilter;
9 | import com.netflix.zuul.context.RequestContext;
10 |
11 | class PreFilter extends ZuulFilter {
12 |
13 | Logger log = LoggerFactory.getLogger(PreFilter.class);
14 |
15 | @Override
16 | String filterType() {
17 | return "pre"
18 | }
19 |
20 | @Override
21 | int filterOrder() {
22 | return 1000
23 | }
24 |
25 | @Override
26 | boolean shouldFilter() {
27 | return true
28 | }
29 |
30 | @Override
31 | Object run() {
32 | log.info("this is a pre filter")
33 | HttpServletRequest request = RequestContext.getCurrentContext().getRequest()
34 | log.info(String.format("send %s request to %s", request.getMethod(), request.getRequestURL().toString()))
35 | return null
36 | }
37 | }
--------------------------------------------------------------------------------
/spring_cloud_in_action/api-gateway-dynamic-route/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.builder.SpringApplicationBuilder;
4 | import org.springframework.boot.context.properties.ConfigurationProperties;
5 | import org.springframework.cloud.client.SpringCloudApplication;
6 | import org.springframework.cloud.context.config.annotation.RefreshScope;
7 | import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
8 | import org.springframework.cloud.netflix.zuul.filters.ZuulProperties;
9 | import org.springframework.context.annotation.Bean;
10 |
11 | @EnableZuulProxy
12 | @SpringCloudApplication
13 | public class Application {
14 |
15 | public static void main(String[] args) {
16 | new SpringApplicationBuilder(Application.class).web(true).run(args);
17 | }
18 |
19 | @Bean
20 | @RefreshScope
21 | @ConfigurationProperties("zuul")
22 | public ZuulProperties zuulProperties() {
23 | return new ZuulProperties();
24 | }
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/api-gateway-exception/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import com.didispace.filter.DidiErrorAttributes;
4 | import com.didispace.filter.DidiFilterProcessor;
5 | import com.netflix.zuul.FilterProcessor;
6 | import org.springframework.boot.autoconfigure.web.DefaultErrorAttributes;
7 | import org.springframework.boot.builder.SpringApplicationBuilder;
8 | import org.springframework.cloud.client.SpringCloudApplication;
9 | import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
10 | import org.springframework.context.annotation.Bean;
11 |
12 | @EnableZuulProxy
13 | @SpringCloudApplication
14 | public class Application {
15 |
16 | public static void main(String[] args) {
17 | FilterProcessor.setProcessor(new DidiFilterProcessor());
18 | new SpringApplicationBuilder(Application.class).web(true).run(args);
19 | }
20 |
21 | @Bean
22 | public DefaultErrorAttributes errorAttributes() {
23 | return new DidiErrorAttributes();
24 | }
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/api-gateway/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import com.didispace.filter.AccessFilter;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.SpringCloudApplication;
6 | import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
7 | import org.springframework.cloud.netflix.zuul.filters.discovery.PatternServiceRouteMapper;
8 | import org.springframework.context.annotation.Bean;
9 |
10 | @EnableZuulProxy
11 | @SpringCloudApplication
12 | public class Application {
13 |
14 | public static void main(String[] args) {
15 | new SpringApplicationBuilder(Application.class).web(true).run(args);
16 | }
17 |
18 | @Bean
19 | public AccessFilter accessFilter() {
20 | return new AccessFilter();
21 | }
22 |
23 | @Bean
24 | public PatternServiceRouteMapper serviceRouteMapper() {
25 | return new PatternServiceRouteMapper(
26 | "(?^.+)-(?v.+$)",
27 | "${version}/${name}");
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/feign-consumer/src/main/java/com/didispace/web/HelloServiceFallback.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import org.springframework.stereotype.Component;
4 | import org.springframework.web.bind.annotation.RequestBody;
5 | import org.springframework.web.bind.annotation.RequestHeader;
6 | import org.springframework.web.bind.annotation.RequestParam;
7 |
8 | /**
9 | * Created by Administrator on 2016/9/16.
10 | */
11 | @Component
12 | public class HelloServiceFallback implements HelloService {
13 |
14 | @Override
15 | public String hello() {
16 | return "error";
17 | }
18 |
19 | @Override
20 | public String hello(@RequestParam("name") String name) {
21 | return "error";
22 | }
23 |
24 | @Override
25 | public User hello(@RequestHeader("name") String name, @RequestHeader("age") Integer age) {
26 | return new User("未知", 0);
27 | }
28 |
29 | @Override
30 | public String hello(@RequestBody User user) {
31 | return "error";
32 | }
33 |
34 | }
35 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/eureka-consumer-ribbon-hystrix/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
6 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
7 | import org.springframework.cloud.client.loadbalancer.LoadBalanced;
8 | import org.springframework.cloud.netflix.hystrix.EnableHystrix;
9 | import org.springframework.context.annotation.Bean;
10 | import org.springframework.web.client.RestTemplate;
11 |
12 | @EnableCircuitBreaker
13 | @EnableDiscoveryClient
14 | @SpringBootApplication
15 | public class Application {
16 |
17 | @Bean
18 | @LoadBalanced
19 | public RestTemplate restTemplate() {
20 | return new RestTemplate();
21 | }
22 |
23 | public static void main(String[] args) {
24 | new SpringApplicationBuilder(Application.class).web(true).run(args);
25 | }
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/stream-consumer/src/test/java/com/didispace/HelloApplicationTests2.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.junit.Test;
4 | import org.junit.runner.RunWith;
5 | import org.springframework.beans.factory.annotation.Autowired;
6 | import org.springframework.beans.factory.annotation.Qualifier;
7 | import org.springframework.boot.test.SpringApplicationConfiguration;
8 | import org.springframework.integration.support.MessageBuilder;
9 | import org.springframework.messaging.MessageChannel;
10 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
11 | import org.springframework.test.context.web.WebAppConfiguration;
12 |
13 | @RunWith(SpringJUnit4ClassRunner.class)
14 | @SpringApplicationConfiguration(classes = HelloApplication.class)
15 | @WebAppConfiguration
16 | //@DirtiesContext
17 | public class HelloApplicationTests2 {
18 |
19 | @Autowired @Qualifier("input")
20 | private MessageChannel output;
21 |
22 | @Test
23 | public void contextLoads() {
24 | output.send(MessageBuilder.withPayload("From MessageChannel").build());
25 | }
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/Chapter1-1-5/service-B/src/test/java/com/didispace/ApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import com.didispace.web.ComputeController;
4 | import org.junit.Before;
5 | import org.junit.Test;
6 | import org.junit.runner.RunWith;
7 | import org.springframework.boot.test.SpringApplicationConfiguration;
8 | import org.springframework.mock.web.MockServletContext;
9 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
10 | import org.springframework.test.context.web.WebAppConfiguration;
11 | import org.springframework.test.web.servlet.MockMvc;
12 | import org.springframework.test.web.servlet.setup.MockMvcBuilders;
13 |
14 |
15 | @RunWith(SpringJUnit4ClassRunner.class)
16 | @SpringApplicationConfiguration(classes = MockServletContext.class)
17 | @WebAppConfiguration
18 | public class ApplicationTests {
19 |
20 | private MockMvc mvc;
21 |
22 | @Before
23 | public void setUp() throws Exception {
24 | mvc = MockMvcBuilders.standaloneSetup(new ComputeController()).build();
25 | }
26 |
27 | @Test
28 | public void getHello() throws Exception {
29 | }
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-5/service-B/src/test/java/com/didispace/ApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import com.didispace.web.ComputeController;
4 | import org.junit.Before;
5 | import org.junit.Test;
6 | import org.junit.runner.RunWith;
7 | import org.springframework.boot.test.SpringApplicationConfiguration;
8 | import org.springframework.mock.web.MockServletContext;
9 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
10 | import org.springframework.test.context.web.WebAppConfiguration;
11 | import org.springframework.test.web.servlet.MockMvc;
12 | import org.springframework.test.web.servlet.setup.MockMvcBuilders;
13 |
14 |
15 | @RunWith(SpringJUnit4ClassRunner.class)
16 | @SpringApplicationConfiguration(classes = MockServletContext.class)
17 | @WebAppConfiguration
18 | public class ApplicationTests {
19 |
20 | private MockMvc mvc;
21 |
22 | @Before
23 | public void setUp() throws Exception {
24 | mvc = MockMvcBuilders.standaloneSetup(new ComputeController()).build();
25 | }
26 |
27 | @Test
28 | public void getHello() throws Exception {
29 | }
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/api-gateway-exception/src/main/java/com/didispace/filter/post/ThrowExceptionPostFilter.java:
--------------------------------------------------------------------------------
1 | package com.didispace.filter.post;
2 |
3 | import com.netflix.zuul.ZuulFilter;
4 | import org.slf4j.Logger;
5 | import org.slf4j.LoggerFactory;
6 | import org.springframework.stereotype.Component;
7 |
8 | @Component
9 | public class ThrowExceptionPostFilter extends ZuulFilter {
10 |
11 | private static Logger log = LoggerFactory.getLogger(ThrowExceptionPostFilter.class);
12 |
13 | @Override
14 | public String filterType() {
15 | return "post";
16 | }
17 |
18 | @Override
19 | public int filterOrder() {
20 | return 10;
21 | }
22 |
23 | @Override
24 | public boolean shouldFilter() {
25 | return true;
26 | }
27 |
28 | @Override
29 | public Object run() {
30 | log.info("This is a post filter, it will throw a RuntimeException");
31 | doSomething();
32 | return null;
33 | }
34 |
35 | private void doSomething() {
36 | throw new RuntimeException("Exist some errors...");
37 | }
38 |
39 | }
40 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/api-gateway-consul/src/main/java/com/didispace/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import com.netflix.zuul.FilterFileManager;
4 | import com.netflix.zuul.FilterLoader;
5 | import com.netflix.zuul.groovy.GroovyCompiler;
6 | import com.netflix.zuul.groovy.GroovyFileFilter;
7 | import org.springframework.boot.builder.SpringApplicationBuilder;
8 | import org.springframework.cloud.client.SpringCloudApplication;
9 | import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
10 |
11 | @EnableZuulProxy
12 | @SpringCloudApplication
13 | public class Application {
14 |
15 | public static void main(String[] args) {
16 | new SpringApplicationBuilder(Application.class).web(true).run(args);
17 | String zuulFilterRoot = "api-gateway-consul/filter";
18 | FilterLoader.getInstance().setCompiler(new GroovyCompiler());
19 | try {
20 | FilterFileManager.setFilenameFilter(new GroovyFileFilter());
21 | FilterFileManager.init(5,
22 | zuulFilterRoot + "/pre",
23 | zuulFilterRoot + "/post");
24 | } catch (Exception e) {
25 | throw new RuntimeException(e);
26 | }
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/consul-consumer/src/main/java/com/didispace/DcController.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.beans.factory.annotation.Autowired;
4 | import org.springframework.cloud.client.ServiceInstance;
5 | import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
6 | import org.springframework.web.bind.annotation.GetMapping;
7 | import org.springframework.web.bind.annotation.RestController;
8 | import org.springframework.web.client.RestTemplate;
9 |
10 | /**
11 | * @author 翟永超
12 | * @create 2017/4/15.
13 | * @blog http://blog.didispace.com
14 | */
15 | @RestController
16 | public class DcController {
17 |
18 | @Autowired
19 | LoadBalancerClient loadBalancerClient;
20 | @Autowired
21 | RestTemplate restTemplate;
22 |
23 | @GetMapping("/consumer")
24 | public String dc() {
25 | ServiceInstance serviceInstance = loadBalancerClient.choose("consul-client");
26 | String url = "http://" + serviceInstance.getHost() + ":" + serviceInstance.getPort() + "/dc";
27 | System.out.println(url);
28 | return restTemplate.getForObject(url, String.class);
29 | }
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/eureka-consumer/src/main/java/com/didispace/DcController.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.springframework.beans.factory.annotation.Autowired;
4 | import org.springframework.cloud.client.ServiceInstance;
5 | import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
6 | import org.springframework.web.bind.annotation.GetMapping;
7 | import org.springframework.web.bind.annotation.RestController;
8 | import org.springframework.web.client.RestTemplate;
9 |
10 | /**
11 | * @author 翟永超
12 | * @create 2017/4/15.
13 | * @blog http://blog.didispace.com
14 | */
15 | @RestController
16 | public class DcController {
17 |
18 | @Autowired
19 | LoadBalancerClient loadBalancerClient;
20 | @Autowired
21 | RestTemplate restTemplate;
22 |
23 | @GetMapping("/consumer")
24 | public String dc() {
25 | ServiceInstance serviceInstance = loadBalancerClient.choose("eureka-client");
26 | String url = "http://" + serviceInstance.getHost() + ":" + serviceInstance.getPort() + "/dc";
27 | System.out.println(url);
28 | return restTemplate.getForObject(url, String.class);
29 | }
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/stream-consumer/src/test/java/com/didispace/HelloApplicationTests3.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.junit.Test;
4 | import org.junit.runner.RunWith;
5 | import org.springframework.beans.factory.annotation.Autowired;
6 | import org.springframework.beans.factory.annotation.Qualifier;
7 | import org.springframework.boot.test.SpringApplicationConfiguration;
8 | import org.springframework.integration.support.MessageBuilder;
9 | import org.springframework.messaging.Message;
10 | import org.springframework.messaging.MessageChannel;
11 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
12 | import org.springframework.test.context.web.WebAppConfiguration;
13 |
14 | @RunWith(SpringJUnit4ClassRunner.class)
15 | @SpringApplicationConfiguration(classes = HelloApplication.class)
16 | @WebAppConfiguration
17 | //@DirtiesContext
18 | public class HelloApplicationTests3 {
19 |
20 | @Autowired @Qualifier("input")
21 | private MessageChannel output;
22 |
23 | @Test
24 | public void contextLoads() {
25 | Message message = MessageBuilder.withPayload("{\"name\":\"didi\", \"age\":30}").build();
26 | output.send(message);
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/stream-consumer/src/main/java/com/didispace/SinkReceiver4.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.slf4j.Logger;
4 | import org.slf4j.LoggerFactory;
5 | import org.springframework.cloud.stream.annotation.EnableBinding;
6 | import org.springframework.cloud.stream.annotation.StreamListener;
7 | import org.springframework.cloud.stream.messaging.Sink;
8 |
9 | /**
10 | * 分区试验接收者
11 | * @author 翟永超
12 | * @create 2016/11/8.
13 | * @blog http://blog.didispace.com
14 | */
15 | @EnableBinding(value = {Sink.class})
16 | public class SinkReceiver4 {
17 |
18 | private static Logger logger = LoggerFactory.getLogger(HelloApplication.class);
19 |
20 |
21 | @StreamListener(Sink.INPUT)
22 | public void receive(User user) {
23 | logger.info("Received: " + user);
24 | }
25 |
26 | // 配置属性如下:
27 | // # Comsumer Group:input
28 | // spring.cloud.stream.bindings.input.group=Service-A
29 | //
30 | // # Partition
31 | // spring.cloud.stream.bindings.input.destination=greetings
32 | // spring.cloud.stream.bindings.input.consumer.partitioned=true
33 | // spring.cloud.stream.instanceCount=2
34 | // spring.cloud.stream.instanceIndex=0
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/api-gateway-dynamic-filter/filter/post/PostFilter.groovy:
--------------------------------------------------------------------------------
1 | package com.didispace.filter.post
2 |
3 | import com.netflix.zuul.ZuulFilter
4 | import com.netflix.zuul.context.RequestContext
5 | import com.netflix.zuul.http.HttpServletResponseWrapper
6 | import org.slf4j.Logger
7 | import org.slf4j.LoggerFactory
8 | import org.springframework.cloud.netflix.zuul.util.RequestUtils
9 |
10 | import javax.servlet.http.HttpServletResponse
11 |
12 | class PostFilter extends ZuulFilter{
13 |
14 | Logger log = LoggerFactory.getLogger(PostFilter.class)
15 |
16 | @Override
17 | String filterType() {
18 | return "post"
19 | }
20 |
21 | @Override
22 | int filterOrder() {
23 | return 2000
24 | }
25 |
26 | @Override
27 | boolean shouldFilter() {
28 | return true
29 | }
30 |
31 | @Override
32 | Object run() {
33 | log.info("debug request : {}", RequestContext.getCurrentContext().getBoolean("debugRequest"))
34 | log.info("this is a post filter: Receive response")
35 | HttpServletResponse response = RequestContext.getCurrentContext().getResponse()
36 | response.getOutputStream().print(", I am zhaiyongchao")
37 | response.flushBuffer()
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/api-gateway-exception/src/main/java/com/didispace/filter/error/ErrorExtFilter.java:
--------------------------------------------------------------------------------
1 | package com.didispace.filter.error;
2 |
3 | import com.netflix.zuul.ZuulFilter;
4 | import com.netflix.zuul.context.RequestContext;
5 | import org.slf4j.Logger;
6 | import org.slf4j.LoggerFactory;
7 | import org.springframework.cloud.netflix.zuul.filters.post.SendErrorFilter;
8 | import org.springframework.stereotype.Component;
9 |
10 | /**
11 | * 从POST抛出的异常,使用该过滤器返回错误信息
12 | */
13 | @Component
14 | public class ErrorExtFilter extends SendErrorFilter {
15 |
16 | Logger log = LoggerFactory.getLogger(ErrorExtFilter.class);
17 |
18 | @Override
19 | public String filterType() {
20 | return "error";
21 | }
22 |
23 | @Override
24 | public int filterOrder() {
25 | return 30;
26 | }
27 |
28 | @Override
29 | public boolean shouldFilter() {
30 | RequestContext ctx = RequestContext.getCurrentContext();
31 | ZuulFilter failedFilter = (ZuulFilter) ctx.get("failed.filter");
32 | if(failedFilter != null && failedFilter.filterType().equals("post")) {
33 | return true;
34 | }
35 | return false;
36 | }
37 |
38 | }
39 |
--------------------------------------------------------------------------------
/Chapter1-1-1/compute-service/src/main/java/com/didispace/web/ComputeController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import org.apache.log4j.Logger;
4 | import org.springframework.beans.factory.annotation.Autowired;
5 | import org.springframework.cloud.client.ServiceInstance;
6 | import org.springframework.cloud.client.discovery.DiscoveryClient;
7 | import org.springframework.web.bind.annotation.RequestMapping;
8 | import org.springframework.web.bind.annotation.RequestMethod;
9 | import org.springframework.web.bind.annotation.RequestParam;
10 | import org.springframework.web.bind.annotation.RestController;
11 |
12 | @RestController
13 | public class ComputeController {
14 |
15 | private final Logger logger = Logger.getLogger(getClass());
16 |
17 | @Autowired
18 | private DiscoveryClient client;
19 |
20 | @RequestMapping(value = "/add" ,method = RequestMethod.GET)
21 | public Integer add(@RequestParam Integer a, @RequestParam Integer b) {
22 | ServiceInstance instance = client.getLocalServiceInstance();
23 | Integer r = a + b;
24 | logger.info("/add, host:" + instance.getHost() + ", service_id:" + instance.getServiceId() + ", result:" + r);
25 | return r;
26 | }
27 |
28 | }
--------------------------------------------------------------------------------
/Chapter1-1-3/compute-service/src/main/java/com/didispace/web/ComputeController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import org.apache.log4j.Logger;
4 | import org.springframework.beans.factory.annotation.Autowired;
5 | import org.springframework.cloud.client.ServiceInstance;
6 | import org.springframework.cloud.client.discovery.DiscoveryClient;
7 | import org.springframework.web.bind.annotation.RequestMapping;
8 | import org.springframework.web.bind.annotation.RequestMethod;
9 | import org.springframework.web.bind.annotation.RequestParam;
10 | import org.springframework.web.bind.annotation.RestController;
11 |
12 | @RestController
13 | public class ComputeController {
14 |
15 | private final Logger logger = Logger.getLogger(getClass());
16 |
17 | @Autowired
18 | private DiscoveryClient client;
19 |
20 | @RequestMapping(value = "/add" ,method = RequestMethod.GET)
21 | public Integer add(@RequestParam Integer a, @RequestParam Integer b) {
22 | ServiceInstance instance = client.getLocalServiceInstance();
23 | Integer r = a + b;
24 | logger.info("/add, host:" + instance.getHost() + ", service_id:" + instance.getServiceId() + ", result:" + r);
25 | return r;
26 | }
27 |
28 | }
--------------------------------------------------------------------------------
/Chapter1-1-6/compute-service/src/main/java/com/didispace/web/ComputeController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import org.apache.log4j.Logger;
4 | import org.springframework.beans.factory.annotation.Autowired;
5 | import org.springframework.cloud.client.ServiceInstance;
6 | import org.springframework.cloud.client.discovery.DiscoveryClient;
7 | import org.springframework.web.bind.annotation.RequestMapping;
8 | import org.springframework.web.bind.annotation.RequestMethod;
9 | import org.springframework.web.bind.annotation.RequestParam;
10 | import org.springframework.web.bind.annotation.RestController;
11 |
12 | @RestController
13 | public class ComputeController {
14 |
15 | private final Logger logger = Logger.getLogger(getClass());
16 |
17 | @Autowired
18 | private DiscoveryClient client;
19 |
20 | @RequestMapping(value = "/add" ,method = RequestMethod.GET)
21 | public Integer add(@RequestParam Integer a, @RequestParam Integer b) {
22 | ServiceInstance instance = client.getLocalServiceInstance();
23 | Integer r = a + b;
24 | logger.info("/add, host:" + instance.getHost() + ", service_id:" + instance.getServiceId() + ", result:" + r);
25 | return r;
26 | }
27 |
28 | }
--------------------------------------------------------------------------------
/spring_cloud_in_action/hello-service-api/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | 4.0.0
5 |
6 | com.didispace
7 | hello-service-api
8 | 0.0.1-SNAPSHOT
9 | jar
10 |
11 | hello-service-api
12 |
13 |
14 | org.springframework.boot
15 | spring-boot-starter-parent
16 | 1.3.7.RELEASE
17 |
18 |
19 |
20 |
21 | UTF-8
22 | UTF-8
23 | 1.8
24 |
25 |
26 |
27 |
28 | org.springframework.boot
29 | spring-boot-starter-web
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-1/compute-service/src/main/java/com/didispace/web/ComputeController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import org.apache.log4j.Logger;
4 | import org.springframework.beans.factory.annotation.Autowired;
5 | import org.springframework.cloud.client.ServiceInstance;
6 | import org.springframework.cloud.client.discovery.DiscoveryClient;
7 | import org.springframework.web.bind.annotation.RequestMapping;
8 | import org.springframework.web.bind.annotation.RequestMethod;
9 | import org.springframework.web.bind.annotation.RequestParam;
10 | import org.springframework.web.bind.annotation.RestController;
11 |
12 | @RestController
13 | public class ComputeController {
14 |
15 | private final Logger logger = Logger.getLogger(getClass());
16 |
17 | @Autowired
18 | private DiscoveryClient client;
19 |
20 | @RequestMapping(value = "/add" ,method = RequestMethod.GET)
21 | public Integer add(@RequestParam Integer a, @RequestParam Integer b) {
22 | ServiceInstance instance = client.getLocalServiceInstance();
23 | Integer r = a + b;
24 | logger.info("/add, host:" + instance.getHost() + ", service_id:" + instance.getServiceId() + ", result:" + r);
25 | return r;
26 | }
27 |
28 | }
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-3/compute-service/src/main/java/com/didispace/web/ComputeController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import org.apache.log4j.Logger;
4 | import org.springframework.beans.factory.annotation.Autowired;
5 | import org.springframework.cloud.client.ServiceInstance;
6 | import org.springframework.cloud.client.discovery.DiscoveryClient;
7 | import org.springframework.web.bind.annotation.RequestMapping;
8 | import org.springframework.web.bind.annotation.RequestMethod;
9 | import org.springframework.web.bind.annotation.RequestParam;
10 | import org.springframework.web.bind.annotation.RestController;
11 |
12 | @RestController
13 | public class ComputeController {
14 |
15 | private final Logger logger = Logger.getLogger(getClass());
16 |
17 | @Autowired
18 | private DiscoveryClient client;
19 |
20 | @RequestMapping(value = "/add" ,method = RequestMethod.GET)
21 | public Integer add(@RequestParam Integer a, @RequestParam Integer b) {
22 | ServiceInstance instance = client.getLocalServiceInstance();
23 | Integer r = a + b;
24 | logger.info("/add, host:" + instance.getHost() + ", service_id:" + instance.getServiceId() + ", result:" + r);
25 | return r;
26 | }
27 |
28 | }
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-6/compute-service/src/main/java/com/didispace/web/ComputeController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import org.apache.log4j.Logger;
4 | import org.springframework.beans.factory.annotation.Autowired;
5 | import org.springframework.cloud.client.ServiceInstance;
6 | import org.springframework.cloud.client.discovery.DiscoveryClient;
7 | import org.springframework.web.bind.annotation.RequestMapping;
8 | import org.springframework.web.bind.annotation.RequestMethod;
9 | import org.springframework.web.bind.annotation.RequestParam;
10 | import org.springframework.web.bind.annotation.RestController;
11 |
12 | @RestController
13 | public class ComputeController {
14 |
15 | private final Logger logger = Logger.getLogger(getClass());
16 |
17 | @Autowired
18 | private DiscoveryClient client;
19 |
20 | @RequestMapping(value = "/add" ,method = RequestMethod.GET)
21 | public Integer add(@RequestParam Integer a, @RequestParam Integer b) {
22 | ServiceInstance instance = client.getLocalServiceInstance();
23 | Integer r = a + b;
24 | logger.info("/add, host:" + instance.getHost() + ", service_id:" + instance.getServiceId() + ", result:" + r);
25 | return r;
26 | }
27 |
28 | }
--------------------------------------------------------------------------------
/spring_cloud_in_action/stream-consumer/src/test/java/com/didispace/HelloApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.junit.Test;
4 | import org.junit.runner.RunWith;
5 | import org.springframework.beans.factory.annotation.Autowired;
6 | import org.springframework.boot.test.SpringApplicationConfiguration;
7 | import org.springframework.cloud.stream.annotation.Output;
8 | import org.springframework.integration.support.MessageBuilder;
9 | import org.springframework.messaging.MessageChannel;
10 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
11 | import org.springframework.test.context.web.WebAppConfiguration;
12 |
13 | @RunWith(SpringJUnit4ClassRunner.class)
14 | @SpringApplicationConfiguration(classes = HelloApplication.class)
15 | @WebAppConfiguration
16 | //@DirtiesContext
17 | public class HelloApplicationTests {
18 |
19 | @Autowired
20 | private SinkSender sinkSender;
21 |
22 | @Test
23 | public void contextLoads() {
24 | sinkSender.output().send(MessageBuilder.withPayload("From SinkSender").build());
25 | }
26 |
27 | public interface SinkSender {
28 |
29 | String OUTPUT = "input";
30 |
31 | @Output(SinkSender.OUTPUT)
32 | MessageChannel output();
33 |
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/Chapter1-1-5/service-A/src/main/java/com/didispace/web/ComputeController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import org.apache.log4j.Logger;
4 | import org.springframework.beans.factory.annotation.Autowired;
5 | import org.springframework.cloud.client.ServiceInstance;
6 | import org.springframework.cloud.client.discovery.DiscoveryClient;
7 | import org.springframework.web.bind.annotation.RequestMapping;
8 | import org.springframework.web.bind.annotation.RequestMethod;
9 | import org.springframework.web.bind.annotation.RequestParam;
10 | import org.springframework.web.bind.annotation.RestController;
11 |
12 | @RestController
13 | public class ComputeController {
14 |
15 | private final Logger logger = Logger.getLogger(getClass());
16 |
17 | @Autowired
18 | private DiscoveryClient client;
19 |
20 | @RequestMapping(value = "/add" ,method = RequestMethod.GET)
21 | public String add(@RequestParam Integer a, @RequestParam Integer b) {
22 | ServiceInstance instance = client.getLocalServiceInstance();
23 | Integer r = a + b;
24 | logger.info("/add, host:" + instance.getHost() + ", service_id:" + instance.getServiceId() + ", result:" + r);
25 | return "From Service-A, Result is " + r;
26 | }
27 |
28 | }
--------------------------------------------------------------------------------
/Chapter1-1-5/service-B/src/main/java/com/didispace/web/ComputeController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import org.apache.log4j.Logger;
4 | import org.springframework.beans.factory.annotation.Autowired;
5 | import org.springframework.cloud.client.ServiceInstance;
6 | import org.springframework.cloud.client.discovery.DiscoveryClient;
7 | import org.springframework.web.bind.annotation.RequestMapping;
8 | import org.springframework.web.bind.annotation.RequestMethod;
9 | import org.springframework.web.bind.annotation.RequestParam;
10 | import org.springframework.web.bind.annotation.RestController;
11 |
12 | @RestController
13 | public class ComputeController {
14 |
15 | private final Logger logger = Logger.getLogger(getClass());
16 |
17 | @Autowired
18 | private DiscoveryClient client;
19 |
20 | @RequestMapping(value = "/add" ,method = RequestMethod.GET)
21 | public String add(@RequestParam Integer a, @RequestParam Integer b) {
22 | ServiceInstance instance = client.getLocalServiceInstance();
23 | Integer r = a + b;
24 | logger.info("/add, host:" + instance.getHost() + ", service_id:" + instance.getServiceId() + ", result:" + r);
25 | return "From Service-B, Result is " + r;
26 | }
27 |
28 | }
--------------------------------------------------------------------------------
/spring_cloud_in_action/trace-2/src/main/java/com/didispace/TraceApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.slf4j.Logger;
4 | import org.slf4j.LoggerFactory;
5 | import org.springframework.boot.SpringApplication;
6 | import org.springframework.boot.autoconfigure.SpringBootApplication;
7 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
8 | import org.springframework.web.bind.annotation.RequestMapping;
9 | import org.springframework.web.bind.annotation.RequestMethod;
10 | import org.springframework.web.bind.annotation.RestController;
11 |
12 | import javax.servlet.http.HttpServletRequest;
13 |
14 | @RestController
15 | @EnableDiscoveryClient
16 | @SpringBootApplication
17 | public class TraceApplication {
18 |
19 | private final Logger logger = LoggerFactory.getLogger(getClass());
20 |
21 | @RequestMapping(value = "/trace-2", method = RequestMethod.GET)
22 | public String trace(HttpServletRequest request) {
23 | logger.info("======",
24 | request.getHeader("X-B3-TraceId"), request.getHeader("X-B3-SpanId"));
25 | return "Trace";
26 | }
27 |
28 | public static void main(String[] args) {
29 | SpringApplication.run(TraceApplication.class, args);
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/trace-stream-2/src/main/java/com/didispace/TraceApplication.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.slf4j.Logger;
4 | import org.slf4j.LoggerFactory;
5 | import org.springframework.boot.SpringApplication;
6 | import org.springframework.boot.autoconfigure.SpringBootApplication;
7 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
8 | import org.springframework.web.bind.annotation.RequestMapping;
9 | import org.springframework.web.bind.annotation.RequestMethod;
10 | import org.springframework.web.bind.annotation.RestController;
11 |
12 | import javax.servlet.http.HttpServletRequest;
13 |
14 | @RestController
15 | @EnableDiscoveryClient
16 | @SpringBootApplication
17 | public class TraceApplication {
18 |
19 | private final Logger logger = LoggerFactory.getLogger(getClass());
20 |
21 | @RequestMapping(value = "/trace-2", method = RequestMethod.GET)
22 | public String trace(HttpServletRequest request) {
23 | logger.info("======",
24 | request.getHeader("X-B3-TraceId"), request.getHeader("X-B3-SpanId"));
25 | return "Trace";
26 | }
27 |
28 | public static void main(String[] args) {
29 | SpringApplication.run(TraceApplication.class, args);
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-5/service-A/src/main/java/com/didispace/web/ComputeController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import org.apache.log4j.Logger;
4 | import org.springframework.beans.factory.annotation.Autowired;
5 | import org.springframework.cloud.client.ServiceInstance;
6 | import org.springframework.cloud.client.discovery.DiscoveryClient;
7 | import org.springframework.web.bind.annotation.RequestMapping;
8 | import org.springframework.web.bind.annotation.RequestMethod;
9 | import org.springframework.web.bind.annotation.RequestParam;
10 | import org.springframework.web.bind.annotation.RestController;
11 |
12 | @RestController
13 | public class ComputeController {
14 |
15 | private final Logger logger = Logger.getLogger(getClass());
16 |
17 | @Autowired
18 | private DiscoveryClient client;
19 |
20 | @RequestMapping(value = "/add" ,method = RequestMethod.GET)
21 | public String add(@RequestParam Integer a, @RequestParam Integer b) {
22 | ServiceInstance instance = client.getLocalServiceInstance();
23 | Integer r = a + b;
24 | logger.info("/add, host:" + instance.getHost() + ", service_id:" + instance.getServiceId() + ", result:" + r);
25 | return "From Service-A, Result is " + r;
26 | }
27 |
28 | }
--------------------------------------------------------------------------------
/1-Brixton版教程示例/Chapter1-1-5/service-B/src/main/java/com/didispace/web/ComputeController.java:
--------------------------------------------------------------------------------
1 | package com.didispace.web;
2 |
3 | import org.apache.log4j.Logger;
4 | import org.springframework.beans.factory.annotation.Autowired;
5 | import org.springframework.cloud.client.ServiceInstance;
6 | import org.springframework.cloud.client.discovery.DiscoveryClient;
7 | import org.springframework.web.bind.annotation.RequestMapping;
8 | import org.springframework.web.bind.annotation.RequestMethod;
9 | import org.springframework.web.bind.annotation.RequestParam;
10 | import org.springframework.web.bind.annotation.RestController;
11 |
12 | @RestController
13 | public class ComputeController {
14 |
15 | private final Logger logger = Logger.getLogger(getClass());
16 |
17 | @Autowired
18 | private DiscoveryClient client;
19 |
20 | @RequestMapping(value = "/add" ,method = RequestMethod.GET)
21 | public String add(@RequestParam Integer a, @RequestParam Integer b) {
22 | ServiceInstance instance = client.getLocalServiceInstance();
23 | Integer r = a + b;
24 | logger.info("/add, host:" + instance.getHost() + ", service_id:" + instance.getServiceId() + ", result:" + r);
25 | return "From Service-B, Result is " + r;
26 | }
27 |
28 | }
--------------------------------------------------------------------------------
/spring_cloud_in_action/stream-producer/src/main/java/com/didispace/SinkSender3.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.slf4j.Logger;
4 | import org.slf4j.LoggerFactory;
5 | import org.springframework.cloud.stream.annotation.EnableBinding;
6 | import org.springframework.cloud.stream.messaging.Processor;
7 | import org.springframework.context.annotation.Bean;
8 | import org.springframework.integration.annotation.InboundChannelAdapter;
9 | import org.springframework.integration.annotation.Poller;
10 | import org.springframework.integration.core.MessageSource;
11 | import org.springframework.messaging.support.GenericMessage;
12 |
13 | /**
14 | * @author 翟永超
15 | * @create 2016/11/8.
16 | * @blog http://blog.didispace.com
17 | */
18 | //@EnableBinding(value = {Processor.class})
19 | public class SinkSender3 {
20 |
21 | private static Logger logger = LoggerFactory.getLogger(HelloApplication.class);
22 |
23 | @Bean
24 | @InboundChannelAdapter(value = Processor.OUTPUT, poller = @Poller(fixedDelay = "2000"))
25 | public MessageSource timerMessageSource() {
26 | // Map headers = new HashMap<>();
27 | // headers.put("content-type", "application/user");
28 | return () -> new GenericMessage<>("{\"name\":\"didi\", \"age\":30}");
29 | }
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/spring_cloud_in_action/stream-consumer/src/main/java/com/didispace/SinkReceiver2.java:
--------------------------------------------------------------------------------
1 | package com.didispace;
2 |
3 | import org.slf4j.Logger;
4 | import org.slf4j.LoggerFactory;
5 | import org.springframework.cloud.stream.annotation.EnableBinding;
6 | import org.springframework.cloud.stream.annotation.StreamListener;
7 | import org.springframework.cloud.stream.messaging.Sink;
8 |
9 | /**
10 | * @author 翟永超
11 | * @create 2016/11/8.
12 | * @blog http://blog.didispace.com
13 | */
14 | //@EnableBinding(value = {Sink.class})
15 | public class SinkReceiver2 {
16 |
17 | private static Logger logger = LoggerFactory.getLogger(HelloApplication.class);
18 |
19 |
20 | @StreamListener(Sink.INPUT)
21 | public void receive(User user) {
22 | logger.info("Received: " + user);
23 | }
24 |
25 | /**原生实现需要实现转换**/
26 |
27 | // @ServiceActivator(inputChannel=Sink.INPUT)
28 | // public void receive(User user) {
29 | // logger.info("Received: " + user);
30 | // }
31 | //
32 | // @Transformer(inputChannel = Sink.INPUT, outputChannel = Sink.INPUT)
33 | // public User transform(String message) throws Exception {
34 | // ObjectMapper objectMapper = new ObjectMapper();
35 | // User user = objectMapper.readValue(message, User.class);
36 | // return user;
37 | // }
38 |
39 | }
40 |
--------------------------------------------------------------------------------
/2-Dalston版教程示例/eureka-feign-consumer/src/main/java/com/didispace/api/consumer/Application.java:
--------------------------------------------------------------------------------
1 | package com.didispace.api.consumer;
2 |
3 | import com.didispace.api.HelloService;
4 | import org.springframework.beans.factory.annotation.Autowired;
5 | import org.springframework.boot.autoconfigure.SpringBootApplication;
6 | import org.springframework.boot.builder.SpringApplicationBuilder;
7 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
8 | import org.springframework.cloud.netflix.feign.EnableFeignClients;
9 | import org.springframework.cloud.netflix.feign.FeignClient;
10 | import org.springframework.web.bind.annotation.GetMapping;
11 | import org.springframework.web.bind.annotation.RestController;
12 |
13 | @EnableFeignClients
14 | @EnableDiscoveryClient
15 | @SpringBootApplication
16 | public class Application {
17 |
18 | @FeignClient("eureka-feign-client")
19 | interface HelloServiceClient extends HelloService {
20 |
21 | }
22 |
23 | @RestController
24 | class TestController {
25 |
26 | @Autowired
27 | private HelloServiceClient helloServiceClient;
28 |
29 | @GetMapping("/test")
30 | public String test(String name) {
31 | return helloServiceClient.hello(name);
32 | }
33 |
34 | }
35 |
36 | public static void main(String[] args) {
37 | new SpringApplicationBuilder(Application.class).web(true).run(args);
38 | }
39 |
40 | }
41 |
--------------------------------------------------------------------------------