目录导航

在本节中,我们将创建以下微服务:CurrencyCalculationServiceCurrencyExchangeService

注意:在本教程中,我们引用了货币换算服务作为货币计算服务。 两种服务的含义相同,因此请不要混淆。

下面我们来详细的了解这些服务的功能。

在上图中,CurrencyExchangeService使用JPA与数据库进行交互并返回特定货币的兑换值。 例如,USD转换为RMB

调用CurrencyExchangeService时,需要传递两个参数:fromto。 例如,如果要将货币USD转换为RMB

访问URL:http://localhost:8000/currency-exchange/from/USD/to/RMB。它将返回以下响应:

{  
    id: 101,  
    from: "USD",  
    to: "RMB",  
    conversionMultiple: 72,  
    port: 8000  
}

货币兑换服务将返回转换倍数。转换比例是:1美元约等于7人民币。 货币转换器服务使用货币兑换服务。 假设货币转换器服务希望将100 USD转换为RMB。 因此它将调用货币兑换服务,并将转换在URL参数中提供的指定金额。

  • http://localhost:8100/currency-converter/from/USD/to/RMB/quantity/100

它将返回以下响应:

{  
    Id: 101,  
    from: "USD",  
    to: "RMB",  
    conversionMultiple: 7,  
    quantity: 100  
    totalCalculatedAmount: 700,  
    port: 8000  
}

接下来将在示例中使用Spring Cloud实现这两项服务。

设置货币兑换服务

第1步:打开spring初始化程序 http://start.spring.io

第2步:选择项目:Maven项目,语言:Java和Spring Boot版本2.2.0 M6或更高版本。 提供组名和工件ID。分别填写组名和工件ID:com.xntutor.microservicescurrency-exchange-service

第3步:添加依赖项Web,DevTools,Actuator和Config Client。

第4步:点击Generate Project按钮。 它将下载项目的zip文件。

第5步:将其解压缩到本地磁盘中。

第6步:导入项目。

单击文件菜单->导入->现有Maven项目->下一步->浏览->选择项目->完成

导入需要一些时间。 项目导入完成后,将显示以下项目目录。 不要考虑目录中的data.sql文件,因为我们稍后会创建它。

第7步:打开application.properties文件并配置应用程序名称和端口号。

文件:application.properties

spring.application.name=currency-exchange-service.  
server.port=8000

当运行currency-exchange-service时,它正常运行但不执行任何服务。 在下一步中,我们将在currency-exchange-service中实现代码。

对货币兑换服务进行硬编码

现在,创建一个将货币从USD转换为INR的服务。

第1步:com.xntutor.microservices.currencyexchangeservice包中创建一个名为CurrencyExchangeController的类文件(REST控制器)。

文件:CurrencyExchangeController.java



第2步:创建一个名为ExchangeValue类文件。文件:ExchangeValue.java



第3步:运行CurrencyExchangeServiceApplication.java。 它在application.properties文件中配置的端口8000上运行。
在浏览器上收到以下响应:

{  
id: 101,  
from: "USD",  
to: "INR",  
conversionMultiple: 72,  
port: 8000  
}

在响应中设置动态端口

CurrencyExchangeService确定货币的兑换值。CurrencyCalculationService使用CurrencyExchangeService来确定一种货币在另一种货币中的值。 在下一主题的后面,我们将创建CurrencyExchangeService的多个实例。

目前,该服务在端口8000上运行。稍后,我们将在端口8001、8002等上运行它。下一步我们为currency-exchange-service设置一个端口。

第1步: 打开ExchangeValue.java文件并添加port变量。 仅为port变量生成gettersetter方法。

文件:ExchangeValue.java



已经在application.properties文件中配置了应用程序名称和端口号,因此无需再次配置。

现在从环境中获取端口号。

第2步:打开CurrencyExchangeController.java并获取环境的属性。文件:CurrencyExchangeController.java



当刷新浏览器时,URL更改为:http://localhost:8000/currency-exchange/from/USD/to/INR

{  
    id: 1000,  
    from: "USD",  
    to: "INR"  
    conversionMultiple: 65,  
    port: 8000  
}

目前,CurrencyExchangeServiceApplication正在端口8000上运行。
接下来,可在其他端口号上运行CurrencyExchangeServiceApplication。只需要将application.properties文件中的端口从8000更改为8001、8002等。

假设要创建CurrencyExchangeServiceApplication的两个实例,则需要在外部设置端口。下面创建一个在端口8001上运行的CurrencyExchangeServiceApplication实例。

第1步: 右键点击项目->运行方式->运行配置。或单击突出显示的符号->运行配置。

第2步:CurrencyExchangeServiceAppication重命名为CurrencyExchangeServiceAppication8000,然后单击Apply(应用)按钮。

第3步: 右键单击CurrencyExchangeServiceApplication8000->复制。它生成CurrencyExchangeServiceApplication8000的重复文件。将在端口8001上运行它。

第4步: 单击Arguments(参数)选项卡,然后在VM参数文本框中输入–Dserver.port=8001。 分别单击“Apply”和“Run”按钮。

注意:在VM参数中传递的值,它会覆盖application.properties文件的配置。

单击“Run”按钮后,它将开始在端口8001上运行。

第4步: 在浏览器访问URL:http://localhost:8001/currency-exchange/from/USD/to/INR,得到以下响应:

{  
    id: 1000,  
    from: "USD",  
    to: "INR",  
    conversionMultiple: 65,  
    port: 8001  
}

现在,应该有两个CurrencyExchangeServiceApplication实例,它们在两个不同的端口8000和8001上运行。