我正试图在运行的Eureka发现服务中注册我的云合同存根,以进行烟雾测试。stubrunner本身已在服务发现中成功注册,但无法按预期访问Stub提供的endpoint。
存根应该取代真正的masterdata微服务(rest apis)。
存根运行器主类:
@SpringBootApplication
@EnableStubRunnerServer
@EnableEurekaClient
@AutoConfigureStubRunner
class EurekaStubRunnerApplication
fun main(args: Array<String>) {
runApplication<EurekaStubRunnerApplication>(*args)
}
固执的bootstrap.yml
spring:
application:
name: masterdata
jhipster:
registry:
password: admin
固执的application.yml
eureka:
client:
service-url:
defaultZone: http://admin:${jhipster.registry.password}@localhost:8761/eureka/
enabled: true
healthcheck:
enabled: false
fetch-registry: true
register-with-eureka: true
instance-info-replication-interval-seconds: 10
registry-fetch-interval-seconds: 10
instance:
appname: masterdata
instance-id: masterdata:${spring.application.instance-id:${random.value}}
lease-renewal-interval-in-seconds: 5
lease-expiration-duration-in-seconds: 10
status-page-url-path: management/info
health-check-url-path: management/health
ribbon:
eureka:
enabled: true
server:
port: 8888
stubrunner:
cloud:
eureka:
enabled: true
stubbed:
discovery:
enabled: true
启动存根运行程序的命令:
java -jar eureka-stub-runner-0.0.1-SNAPSHOT.jar --stubrunner.ids=com.xetics.mes:masterdata-stubs:+:8081 --stubrunner.stubsMode=LOCAL
启动真正的masterdata服务时,我可以通过正在运行的网关调用apiendpoint:
curl -X GET --header 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImF1dGgiOiJST0xFX0FETUlOLFJPTEVfVVNFUiIsImV4cCI6MTU0NjYxMDc2OH0.EF3PHho-B-ayOmmeFrcA90U38cd3AZsU7pA7-9xN0SpuVBvev2sHvejv-FI_FlrwP7qWcCpibW-yWwFDBSUv9w' 'http://localhost:8080/masterdata/api/stations'
[]
存根在存根控件中运行的相同调用:
curl -X GET --header 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImF1dGgiOiJST0xFX0FETUlOLFJPTEVfVVNFUiIsImV4cCI6MTU0NjYxMDc2OH0.EF3PHho-B-ayOmmeFrcA90U38cd3AZsU7pA7-9xN0SpuVBvev2sHvejv-FI_FlrwP7qWcCpibW-yWwFDBSUv9w' 'http://localhost:8080/masterdata/api/stations'
{"timestamp":"2019-01-03T16:59:36.426+0000","status":404,"error":"Not Found","message":"No message available","path":"/api/stations"}
虽然,我可以直接调用存根:
curl -X GET --header 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImF1dGgiOiJST0xFX0FETUlOLFJPTEVfVVNFUiIsImV4cCI6MTU0NjYxMDc2OH0.EF3PHho-B-ayOmmeFrcA90U38cd3AZsU7pA7-9xN0SpuVBvev2sHvejv-FI_FlrwP7qWcCpibW-yWwFDBSUv9w' 'http://localhost:8081/api/stations'
[{"archiveTime":null,"description":"A fantastic base for building a time machine","id":1985,"maxCapacity":2,"name":"DeLorean DMC 12","icon":"delorean-icon"},{"archiveTime":null,"description":"A handy tool for manipulating the space time continuum","id":2015,"maxCapacity":1,"name":"Flux capacitor"}]
我做错了什么?据我所知,这个问题 https://github.com/spring-cloud/spring-cloud-contract/pull/64,应该可以在Eureka服务器中注册存根,不是吗?
我还阅读了以下文档,但没有成功:
此问题是由应用程序的以下错误配置引起的。
...
stubrunner:
cloud:
eureka:
enabled: true
stubbed:
discovery:
# must be false instead of
enabled: true
此外,我需要添加一个服务映射,因为我的存根工件id是masterdata存根,而要调用的服务id是masterdata。
工作中的application.yml现在看起来像这样:
eureka:
client:
service-url:
defaultZone: http://admin:${jhipster.registry.password}@localhost:8761/eureka/
enabled: true
healthcheck:
enabled: false
fetch-registry: true
register-with-eureka: true
instance-info-replication-interval-seconds: 10
registry-fetch-interval-seconds: 10
instance:
appname: stubrunner
instance-id: stubrunner:${spring.application.instance-id:${random.value}}
lease-renewal-interval-in-seconds: 5
lease-expiration-duration-in-seconds: 10
status-page-url-path: management/info
health-check-url-path: management/health
ribbon:
eureka:
enabled: true
server:
port: 8888
stubrunner:
cloud:
eureka:
enabled: true
stubbed:
discovery:
enabled: false
idsToServiceIds:
masterdata-stubs: masterdata
我需要只使用%RAX、%RBX、%RCX、%RDX、%RSI和%RDI(还有%RSP和%RBP)编写像素化汇编代码 GCC编写的程序集代码: 已将%dl更改为%rdx:
Vim 可以将不同字段剪切或复制到不同寄存器中,您可以从不同寄存器中取出内容后粘贴 "寄存器名称 按下"键和另一个字符键,便可以定义一个寄存器。例如:"a "1 定义寄存器后直接进行操作 "ayy 将当前行复制到寄存器 a 中 "ap 将寄存器 a 中的内容粘贴到光标之后 :registers 查看所有寄存器的内容 通常情况下,寄存器 + (先按",再按 Shift+= )对应
3、段寄存器的引用 段寄存器是因为对内存的分段管理而设置的。16位CPU有四个段寄存器,所以,其程序可同时访问四个不同含义的段。段寄存器及其偏移量的引用关系如图2.7所示。 段寄存器CS指向存放程序的内存段,IP是用来存放下条待执行的指令在该段的偏移量,把它们合在一起可在该内存段内取到下次要执行的指令。 段寄存器SS指向用于堆栈的内存段,SP是用来指向该堆栈的栈顶,把它们合在一起可访问栈顶单元。另
我想知道如何从ASM指令中提取寄存器值,并将其放入C中的变量中。 例如:移动文档 DWORD PTR DS:[ESI],EDI (假设EDI持有的值为int)int value=EDI;
Vim提供了许多寄存器。可以将这些寄存器用作多个剪贴板。使用多个文件时,此功能非常有用。在本章中,将讨论以下主题内容 - 复制寄存器中的文本 粘贴寄存器中的文本 列出可用的寄存器 寄存器类型 1. 复制寄存器中的文本 对于复制,可以使用普通的命令,即并将其存储在寄存器中,可以使用以下语法 - 例如,要复制寄存器中的文本,请使用以下命令 - 2. 粘贴寄存器中的文本 从寄存器粘贴文本 - 例如,下面
当前的Perl 5虚拟机是一台堆栈机器。 它通过将操作保持在堆栈上来传递操作之间的值。 操作将值加载到堆栈上,执行他们需要执行的操作并将结果放回堆栈。 这很容易使用,但速度很慢。 要将两个数字相加,您需要执行三次堆栈推送和两次堆栈弹出。 更糟糕的是,堆栈必须在运行时增长,这意味着在您不想分配内存时分配内存。 因此,Parrot将打破虚拟机的既定传统,并使用寄存器架构,更类似于真实硬件CPU的架构。