1.下载xxl-job

2.修改xxl-job执行器application配置文件,添加如下内容:

spring.application.name=meeting-job
spring.cloud.consul.host=127.0.0.1
spring.cloud.consul.port=8500
spring.cloud.consul.discovery.health-check-interval=8s
spring.cloud.consul.discovery.prefer-ip-address=true
spring.cloud.consul.discovery.ip-address=${base.url}
spring.cloud.consul.discovery.health-check-path=${server.servlet.context-path}/actuator/health
spring.main.allow-bean-definition-overriding=true

3.修改xxl-job执行器pom配置文件,添加如下内容:

<!-- consul注册中心 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
    <version>2.2.1.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    <version>2.2.6.RELEASE</version>
</dependency>
<!-- ribbon -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
    <version>2.2.1.RELEASE</version>
</dependency>

<!--openfeign-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
    <version>2.2.1.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
</dependency>

4.启动类XxlJobExecutorApplication添加配置,如下:

@EnableFeignClients
@EnableDiscoveryClient

5.添加FeignConfig类,如下:

@Configuration
public class FeignConfig {
    /**
     *No qualifying bean of type ‘org.springframework.boot.autoconfigure.http.HttpMessage
     */
    @Bean
    @ConditionalOnMissingBean
    public HttpMessageConverters messageConverters(ObjectProvider<HttpMessageConverter<?>> converters) {
        return new HttpMessageConverters(converters.orderedStream().collect(Collectors.toList()));
    }
}

6.创建feign调用接口类,如下所示:

@FeignClient(name = "meeting-web", path = "/meeting/v1/service/device", configuration = FeignHeadConfiguration.class)
public interface DeviceService {

    @RequestMapping(value = "/insert", method = RequestMethod.POST)
    void insert(@RequestBody Device device);

    @RequestMapping(value = "/update", method = RequestMethod.POST)
    void update(@RequestBody Device device);

    @RequestMapping(value = "/getCount", method = RequestMethod.GET)
    int getCount(@RequestParam(value = "acsDevIndexCode") String acsDevIndexCode);

}

7.服务提供者,如下:

@RestController
@RequestMapping(value = "/v1/service/device")
@CrossOrigin
public class DeviceApi {
    @Autowired
    private DeviceService deviceService;

    @RequestMapping(value = "/insert", method = RequestMethod.POST)
    public void insert(@RequestBody Device device) {
        deviceService.insert(device);
    }

    @RequestMapping(value = "/update", method = RequestMethod.POST)
    public void update(@RequestBody Device device) {
        deviceService.update(device);
    }

    @RequestMapping(value = "/getCount", method = RequestMethod.GET)
    public int getCount(@RequestParam(value = "acsDevIndexCode") String acsDevIndexCode) {
        return deviceService.getCount(acsDevIndexCode);
    }

}

8.执行器里面执行调用,如下图所示:

 9. 启动执行器,大功告成。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐