我是微服务的新手。我正在尝试创建一个用于学习目的的小型应用程序。这是我的代码:EurekaServer - application.yml
spring:
application:
name: EurekaServer
server:
port: 8080
servlet:
context-path: /EurekaServer
eureka:
client:
fetch-registry: false
register-with-eureka: false
Run Code Online (Sandbox Code Playgroud)
Eureka Server 工作正常,我可以在http://localhost:8080/EurekaServer看到仪表板
EmployeeClient:application.yml 如下:
spring:
application:
name: EmployeeClient
server:
port: 8586
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8080/EurekaServer
Run Code Online (Sandbox Code Playgroud)
在最后一行中,我需要像在 sts 中按 ctrl+space 一样显式地编写 serviceUrl 它不显示选项 serviceUrl 但它显示 service-url、连字符符号。与 defaultZone 相同。我是否缺少一些 jar 或特定版本?
我的 EmployeeClientApplication.java
@EnableEurekaClient
@SpringBootApplication
public class EmployeeClientApplication {
public static void main(String[] args) {
SpringApplication.run(EmployeeClientApplication.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试运行 EmployeeClientApplication.java 时,它给了我以下异常:
com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known …Run Code Online (Sandbox Code Playgroud) 我正在使用 Spring Cloud and Security 示例。在这个例子中,我使用的是 Spring Boot 版本1.4.1.RELEASE。Spring Boot 父版本到2.0.4.RELASE. 我在端点开始破坏之后更新依赖项的那一刻。
我已经通过Spring Cloud Config - Encrypt Password和文档http://cloud.spring.io/spring-cloud-static/Finchley.RELEASE/single/spring-cloud.html,但不知道为什么我会收到 forbiddeb 错误。
我尝试使用 CURL 和 POSTMAN,得到禁止的错误。
C:\Users\pc>curl localhost:8888/encrypt -d connectionstring=server123;user=root;password@word1 {"timestamp":"2018-09-01T12:53:17.382+0000","status":403 ,"error":"Forbidden","message":"Forbidden","path":"/encrypt"} C:\Users\pc>
注意:我的服务器运行在端口 8888 上,并且已经添加了 JCE 文件
POST : http://localhost:8888/encrypt
我在下面使用的代码
pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.SR1</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId> …Run Code Online (Sandbox Code Playgroud) 我一直在尝试使用 Spring Cloud Gateway、Eureka、配置服务和一些微服务创建一个 docker-compose 堆栈。这些服务在它们自己的、暴露的端口上启动和工作,配置服务工作并且 Eureka 注册这些服务。但是我无法让 Spring Cloud Gateway 工作。
服务正确启动(或者至少日志中没有错误),当我远程进入容器时,我能够请求我想要调用的服务,但是如果我尝试通过配置的路由请求它收到 404。
我的网关配置(为了方便,我结合了配置服务配置和 bootstrap.yml):
spring:
application:
name: gateway-service
cloud:
config:
uri: http://config-service:8080
eureka:
client:
serviceUrl:
defaultZone: http://discovery-service:8061/eureka/
logging:
pattern:
console: "%d{yyyy-MM-dd HH:mm:ss} ${LOG_LEVEL_PATTERN:-%5p} %m%n"
spring:
cloud:
gateway:
routes:
- id: employee-service
predicates:
- "Path=/employee/**"
filters:
- StripPrefix=1
uri: "http://employee-service:8080"
Run Code Online (Sandbox Code Playgroud)
我很确定我只是误解了一些微不足道的事情,而且我离成功只有一步之遥,但是......我就是找不到它。
我期望发生的事情:
我的容器:
0.0.0.0:8080->8080/tcp, 8088/tcp employee-app_gateway-service_1
8088/tcp, 0.0.0.0:5082->5005/tcp, 0.0.0.0:8082->8080/tcp employee-app_employee-service_1
8088/tcp, 0.0.0.0:8011->8061/tcp employee-app_discovery-service_1
8088/tcp, 0.0.0.0:8012->8080/tcp employee-app_config-service_1
Run Code Online (Sandbox Code Playgroud) 我想从 zuul 迁移到 spring 云网关,我不想更改我以前的应用程序的配置。我想知道如何处理带有“/api/ + 'serviceId'”的 url,路由到 lb://serviceId
之前的 zuul 配置
zuul:
prefix: /api
Run Code Online (Sandbox Code Playgroud)
eureka 有很多服务注册,我不想为每个服务注册一个路由。
例如。由 org.springframework.cloud.gateway.discovery.DiscoveryClientRouteDefinitionLocator 自动生成的路由
{
"route_id": "CompositeDiscoveryClient_APIGATEWAY",
"route_definition": {
"id": "CompositeDiscoveryClient_APIGATEWAY",
"predicates": [
{
"name": "Path",
"args": {
"pattern": "/apigateway/**"
}
}
],
"filters": [
{
"name": "RewritePath",
"args": {
"regexp": "/apigateway/(?<remaining>.*)",
"replacement": "/${remaining}"
}
}
],
"uri": "lb://APIGATEWAY",
"order": 0
}
Run Code Online (Sandbox Code Playgroud)
我想要的是
{
"route_id": "CompositeDiscoveryClient_APIGATEWAY",
"route_definition": {
"id": "CompositeDiscoveryClient_APIGATEWAY",
"predicates": [
{
"name": "Path",
"args": {
"pattern": "/api/apigateway/**"
}
}
],
"filters": [ …Run Code Online (Sandbox Code Playgroud) 我的消费者绑定到匿名消费者组,而不是我指定的消费者组。
spring:
cloud:
stream:
kafka:
binder:
brokers: localhost
defaultBrokerPort: 9092
zkNodes: localhost
defaultZkPort: 2181
bindings:
inEvent:
group: eventin
destination: event
outEvent:
group: eventout
destination: processevent
Run Code Online (Sandbox Code Playgroud)
我的 Spring Boot 应用程序
@SpringBootApplication
@EnableBinding(EventStream.class)
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
@StreamListener(value = "inEvent")
public void getEvent(Event event){
System.out.println(event.name);
}
}
Run Code Online (Sandbox Code Playgroud)
我的输入输出通道接口
public interface EventStream {
@Input("inEvent")
SubscribableChannel inEvent();
@Output("outEvent")
MessageChannel outEvent();
}
Run Code Online (Sandbox Code Playgroud)
我的控制台日志--
:在 3.233 秒内启动 ConsumerApplication(JVM 运行 4.004):[ Consumer clientId=consumer-3, groupId=anonymous.0d0c87d6-ef39-4bfe-b475-4491c40caf6d]发现组协调员 singh:9092 (id: 2147483647 …
spring-boot spring-cloud kafka-consumer-api spring-cloud-stream spring-kafka
我一直在尝试建立一个 Spring Boot 项目,但出现错误。我研究并尝试了各种选择,但到目前为止没有运气。任何帮助,将不胜感激。
pom.xml 文件:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.sysyaas.pardakhtyary</groupId>
<artifactId>auth</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>master</name>
<packaging>jar</packaging>
<description>Auth Server Pardakhtyary</description>
<!--<properties>-->
<!--<java.version>1.8</java.version>-->
<!--<spring-cloud.version>Finchley.M8</spring-cloud.version>-->
<!--</properties>-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.0</version>
</dependency>
<!--Swagger-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.8.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.8.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
<!--Test-->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId> …Run Code Online (Sandbox Code Playgroud) 如何指定 Spring Boot 应用程序以仅访问.propertiesSpring Cloud Config Server 中其他文件中的特定文件。
我的 Spring Cloud Config 有以下文件:
application.properties, order-dev.properties, inventory-dev.properties,我所有的 db 和消息传递属性都在 order-dev 和 inventory-dev 文件中。
现在,我想这些属性转移到orderdb-dev,inventorydb-dev,ordermsg-dev和inventorymsg-dev文件。
如何配置我的order和inventory服务来接从属性orderdb-dev,inventorydb-dev,ordermsg-dev和inventorymsg-dev文件?我一直在四处寻找相同的财产。通读官方文档,感觉很迷茫。任何帮助,将不胜感激。
我有简单的配置服务器实现,当我浏览/health端点时,我得到:
{
status:"UP",
"details":{
"configserver":{
"status":"UP",
"details":{
"repositories":[
{
...
Run Code Online (Sandbox Code Playgroud)
如何在我的配置服务器再次检查配置服务器运行状况的情况下停止此操作。这导致配置服务器多次调用 git,这在我的场景中是不需要的。
spring-boot spring-cloud spring-boot-actuator actuator configserver
我很难理解 GCP Dataflow/Apache Beam 和 Spring Cloud Dataflow 之间的差异。我想要做的是转向更原生的流数据处理解决方案,因此我们的开发人员可以更专注于开发核心逻辑而不是管理基础设施。
我们有一个现有的流解决方案,它由 Spring Cloud 数据流“模块”组成,我们可以独立迭代和部署,就像微服务一样,效果很好,但我们希望迁移到我们业务提供的 GCP 中的现有平台,需要我们使用 GCP Dataflow。在高层次上,解决方案很简单:
流 1:
Kafka Source (S0) -> Module A1 (Ingest) -> Module B1 (Map) -> Module C1 (Enrich) -> Module D1 (Split) -> Module E1 (Send output to Sink S1)
Run Code Online (Sandbox Code Playgroud)
流 2:
Kafka Source (S1) -> Module A2 (Ingest) -> Module B2 (Persist to DB) -> Module B3 (Send Notifications through various channels)
Run Code Online (Sandbox Code Playgroud)
根据我的理解,我们想要采用的解决方案应该是相同的,但是模块将成为 GCP Dataflow 模块,源/接收器将成为 GCP Pub/Sub 而不是 kafka。
我遇到的大多数文档都没有将 SCDF 和 …
google-cloud-platform spring-cloud data-science spring-cloud-dataflow apache-beam
我已经为 Cloud Gateway 实现了自定义过滤器工厂。但是,我无法弄清楚编写单元测试用例的方法。在探索默认的过滤器工厂测试用例时,我发现大多数工厂测试类扩展了BaseWebClientTests和测试包中的其他类。
我的问题是我应该将这些中间测试类复制粘贴到我的本地测试包中吗?这里的社区推荐是什么?
spring-cloud ×10
spring-boot ×6
spring ×5
java ×3
actuator ×1
apache-beam ×1
configserver ×1
data-science ×1
gateway ×1
maven ×1
netflix-zuul ×1
spring-kafka ×1