美文网首页
渠道服务

渠道服务

作者: 追梦小蜗牛 | 来源:发表于2020-11-17 20:12 被阅读0次
pexels-szabolcs-toth-3205909.jpg

背景:

跨境支付行业下游需要对接很多个下发渠道,每个渠道的对接方式和接口、参数、逻辑都有所不同。各自需要一个独立的对接渠道的服务。

简单流程图:

流程图.png

知识点:

  • WebClient
    SpringWebFlux下面的一个功能模块。
    是响应式编程的一个小小体现。
    响应式编程定义:
    在计算机领域,响应式编程是一个专注于数据流和变化传递的异步编程范式。
    编程范式定义:
    编程是为了解决问题,而解决问题可以有多种视角和思路,其中具有普适性的模式被归结为范式。 面向对象、面向过程都是编程范式。
    响应式编程是一种从数据流和变化出发的解决问题的模式。 响应式编程,本质上是对数据流或某种变化所作出的反应,但是这个变化什么时候发生是未知的,所以是基于异步、回调的方式在处理问题。

配置:

implementation 'org.springframework.boot:spring-boot-starter-webflux:2.3.0.RELEASE'

@Bean
    public WebClient getWebClient() {
        TcpClient tcpClient = TcpClient
                .create()
                .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, connectTimeOut)
                .doOnConnected(connection -> {
                    connection.addHandlerLast(new ReadTimeoutHandler(readTimeout, TimeUnit.MILLISECONDS));
                    connection.addHandlerLast(new WriteTimeoutHandler(writeTimeout, TimeUnit.MILLISECONDS));
                });
        WebClient webClient = WebClient.builder()
                .defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
                .clientConnector(new ReactorClientHttpConnector(HttpClient.from(tcpClient)))
                .build();

        return webClient;
    }

通用方法

public WebClient.ResponseSpec post(String url, String bodyData, String token) {

        WebClient.ResponseSpec responseSpec = webClient.method(HttpMethod.POST)
                .uri(url)
                .header("Authorization", "Bearer " + token)
                .header("partnerkey", eastWestBankPropertyConfig.getPartnerkey())
                .header("x-correlation-id", "ew-" + idWorker.nextId())
                .contentType(MediaType.APPLICATION_JSON).body(BodyInserters.fromValue(bodyData))
                .retrieve();

        return responseSpec;
    }

    public WebClient.ResponseSpec postToken(String url, MultiValueMap<String, String> formData) {

        return webClient.method(HttpMethod.POST)
                .uri(url)
                .contentType(MediaType.APPLICATION_FORM_URLENCODED).body(BodyInserters.fromFormData(formData))
                .retrieve();
    }

同步调用

    private SubAccountOpenResponse postOpenSubAccount(SubAccountOpenRequest subAccountOpenRequest, EastWestBankPropertyConfig eastWestBankPropertyConfig, String token) {
        return webClientUtil.post(eastWestBankPropertyConfig.getSubAccountOpenUrl(), commonService.buildCommonRequestParam(subAccountOpenRequest), token)
                .bodyToMono(SubAccountOpenResponse.class).onErrorResume(Mono::error).block();
    }
  • RabbitMQ
  • Mock
    Mock渠道API文档的demo数据,方便测试,不影响交易系统的正常测试进度。
    json数据存到.json文件里面,然后IO读取返回,开关控制。
    private JSONObject parseJsonFromFile() {
        JSONObject jsonResult = new JSONObject();
        try {
            File jsonFile = ResourceUtils.getFile("classpath:MockData.json");
            String json = FileUtil.readAsString(jsonFile);
            jsonResult = JSON.parseObject(json);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return jsonResult;
    }

注入

    private final MockData mockData;

    @Autowired
    public TradeService(WebClientUtil webClientUtil, CommonService<T> commonService, MockData mockData) {
        this.webClientUtil = webClientUtil;
        this.commonService = commonService;
        this.mockData = mockData;
    }
  • 全局异常处理
    @ControllerAdvice
    @ExceptionHandler(WebClientResponseException.class)

总结:

未来可以整理一个通用的脚手架,简单的标准、模型。

相关文章

  • 渠道服务

    背景: 跨境支付行业下游需要对接很多个下发渠道,每个渠道的对接方式和接口、参数、逻辑都有所不同。各自需要一个独立的...

  • 渠道服务化

    11.23刘润商学院日课感悟:渠道服务化 前几日讲到的支付宝服务觉得就是一个渠道服务化。 商家和用户的原始购...

  • 渠道服务化

    11.23刘润商学院日课感悟:渠道服务化 前几日讲到的支付宝服务觉得就是一个渠道服务化。 商家和用户的原始购...

  • 渠道服务商

    问:我是个旅游批发商,处在传递价值的环节,现在消费升级,碰到冲击,应该朝哪个方向走? 刘润:这个问题很有共性,我想...

  • 应用客户声音提升客户体验管理能力 浅谈客户声音数据的管理与应用(

    为什么要研究客户声音 全渠道服务的趋势。企业提供了多个渠道向客户提供服务,但是他们之间往往没有关联。现在情况变了,...

  • JDK加解密Cipher类造成的OOM

    背景 本司渠道服务上线后每运行一周左右,内存呈缓慢上升趋势,并最终引起OOM 问题描述 线上渠道服务,是负责整个对...

  • 必须扎实的管理自己

    2017年9月28日,运城,晴天 今天在运城走访渠道市场,发现运城的市场服务非常差,渠道转型严重不足,对市场服务太...

  • 金融服务分销渠道的含义

    金融服务分销渠道指的是金融服务的营销渠道,具体来说是指金融机构通过一定的途径和手段把产品和服务提供给其客户的过程,...

  • 营销渠道

    一、什么是营销渠道? 商品或服务从生产者向消费者转移过程中的通道或路径,又称分销渠道、销售渠道、流通渠道等。 二、...

  • 2018-10-17

    A:网格经理与渠道沟通出现问题 M:烦躁,不安 B:想问责网格经理未服务好渠道 R:若长期这样,结果会导致渠道满意...

网友评论

      本文标题:渠道服务

      本文链接:https://www.haomeiwen.com/subject/yadfiktx.html