Using Contracts
Scenario
When a consumer calls a service from a provider, the contract is required. The consumer can get the providers' contracts in 2 ways: get the providers' contract from off-line, then manually configure it in the project. Or, download the contract from the service center.
Configuration
NOTE
Users can get the contract in either way, regardless of the consumers' development mode.
Configure the Dependencies
In the microservice.yaml file, configure a provider for the consumer. The following is an example of the configuration:
servicecomb:
# other configurations omitted
references:
springmvc:
version-rule: 0.0.1
The version-rule field is the rules to match the version, there are 4 version-rule formats:
- Accurate version: such as
version-rule: 0.0.1
, it indicates that only those providers with version 0.0.1 are matched.- Later versions: such as
version-rule: 1.0.0+
, it indicates that those providers with version greater than 1.0.0 are matched.- Latest version:
version-rule: latest
, it indicates that only those providers with the latest are matched.- Version range: such as
1.0.0-2.0.2
, it indicates that those provider with versions between 1.0.0 and 2.0.2 are matched, including 1.0.0 and 2.0.2The default version matching rule is
latest
.
Manually Configure Contracts
When providers' contracts are obtained from off-line, they should be put into the specific directory of the consumer project. The directory is the one mentioned in the configuration description Service Contract.
Each directory under the microservices directory indicates a microservice, and each yaml file under the microservice directory represents a contract schema. The file name is the schemaId. The contracts stored in application folder should specify the appId for cross application access. The directory tree is as follows:
resources
- microservices
- serviceName # Microservice name
- schemaId.yaml # The contract schemaId
- applications
- appId # Application ID
- serviceName # Microservice name
- schemaId.yaml # The contract schemaId
Automatically Download Contract from Service Center
If a consumer does not explicitly store the contract in the project, when the application starts, ServiceComb framework automatically downloads contracts from the service center based on the providers' microservices name and version configured in microservice.yaml.