欢迎来到Vincentyw的博客

该来的终究会来,该走的也一定会离开。凡事都存在前因后果,因缘成熟了,果报便产生了,无法阻挡。
但是发生过了就会消失,有来就有走,一切都是过客,把握自己当下的因缘,承担起自己该承担的责任,做好眼前该做的事情,做的时候尽全力,过去便放下,放下即自在。

openfeign应用汇总

openfeign应用汇总(一)

1、springcloud接收JSON以及XML报文数据

import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;

import lombok.Data;
@Data
@JacksonXmlRootElement(localName="root") #使用XML转化标签
@JsonInclude(JsonInclude.Include.NON_NULL)
public class BaseRequest<T> implements Serializable {
	private static final long serialVersionUID = 1L;
	@JacksonXmlProperty(localName="head")
	private Head head;
	@JacksonXmlProperty(localName="body")
	private T body;
}
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonInclude;

import lombok.Data;

@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class CouponsRequest {

    @JSONField(name="openId",ordinal=1)
    private String openId; //用户openId
    
    @JSONField(name="stock_id",ordinal=2)
    private String stock_id; //批次号
    
    @JSONField(name="out_request_no",ordinal=3)
    private String out_request_no; //商户单据号,发放凭据号
    
    @JSONField(name="appid",ordinal=4)
    private String appid; //公众账号ID
    
    @JSONField(name="stock_creator_mchid",ordinal=5)
    private String stock_creator_mchid; //创建批次的商户号
    
    @JSONField(name="coupon_id",ordinal=6)
    private String coupon_id; //卡券Id
    
    @JSONField(name="coupon_value",ordinal=7)
    private String coupon_value; //指定面额发券,面额
    
    @JSONField(name="coupon_minimum",ordinal=8)
    private String coupon_minimum; //指定面额发券,券门槛
}
注解说明
OJSONField(ordinal =0)序列化字段的顺序,默认是0
OJSONField(name =“)用于解决属性名和key不一致的情况,当前端传过来的字段名不一样的时候,我们可以在字段名上加上这个注解
@JSONField(format =“yyyy-MM-dd HH:mm:ss”) 用在Date属性上,自动格式化日期
@JSONField(serialize = false) 是否要把这个字段序列化成JSON字符串Q,默认是true
@JSONField(deserialize = false) 字段是否需要进行反序列化,默认是true

2、openfeign设置超时时间(开启hystrix熔断必须设置command超时时间,openfeign内部使用ribbon)

feign: 
  client: 
    config: 
      default: # 这里用default就是全局配置,如果是写服务名称,则是针对某个微服务的配置
        connectTimeout: 60000  #feign访问超时时间,底层使用ribbon
        readTimeout: 60000
  hystrix:
    enabled: true #开启hystrix熔断
  #在30秒内,发生20次以上的请求时,假如错误率达到50%以上,则断路器将被打开。
hystrix:
  command:
    default:  # 或者填写具体的服务名称
      execution:
        isolation:
          #strategy: SEMAPHORE #开启隔离模式
          thread:
            timeoutInMilliseconds: 60000        #请求超时时间
      circuitBreaker:
        sleepWindowInMilliseconds: 30000     #窗口期
        requestVolumeThreshold: 1000           #请求阈值
        errorThresholdPercentage: 50         #错误百分比阈值
  #设置核心线程数
  threadpool:
    default:
      coreSize: 200 #并发执行的最大线程数,默认10
      maxQueuesize: 200 #BlockingQueue的最大队列数
      queuesizeRejectionThreshold: 180 #即使maxQueuesize没有达到,达到queuesizeRejectionThreshold该值后,请求也会被拒绝  

3、openfeign处理请求流程

 

 

posted on 2023-08-07 19:46  VincentYew  阅读(33)  评论(0编辑  收藏  举报

导航