Varias habilidades de uso común de Dubbo

¡Continúe creando, acelere el crecimiento! Este es el tercer día de mi participación en el "Nuggets Daily New Plan · October Update Challenge", haz clic para ver los detalles del evento

Prueba de rendimiento Dubbo

A través de las pruebas, inicialmente podemos juzgar que el rendimiento de la interfaz de dubbo es de alrededor de 9k -1w

Configurar múltiples registros Zk

Dirección de configuración del archivo de propiedades:

#Zookeeper 地址
#单注册中心
#dubbo.registry.address=zookeeper://127.0.0.1:2181
#多注册中心
dubbo.registries.orderZK.address=zookeeper://127.0.0.1:2181
dubbo.registries.userZK.address=zookeeper://127.0.0.1:2181
复制代码

proveedor de servicio:

@DubboService(registry = "orderZK")
复制代码

Consumidores de servicios:

@DubboReference(check = false, registry = "orderZK")
private OrderService orderService;
复制代码

Comprobar al inicio

Comprobar si los servicios dependientes están disponibles al inicio

De manera predeterminada, Dubbo verificará si los servicios dependientes están disponibles al inicio. Si no está disponible, generará una excepción para evitar que se complete la inicialización de Spring, de modo que los problemas se puedan detectar temprano cuando se conecte. El valor predeterminado check="true ".

La verificación se puede desactivar con check="false". Por ejemplo, cuando se prueba, a algunos servicios no les importa, o hay una dependencia circular, y una de las partes debe iniciarla primero.

Además, si su contenedor de Spring se carga de forma diferida o retrasa la referencia al servicio a través de la programación API, desactive la casilla de verificación, de lo contrario, cuando el servicio no esté disponible temporalmente, se generará una excepción y se obtendrá una referencia nula. ="false", siempre será Devuelve una referencia que se puede conectar automáticamente cuando se restablece el servicio.
Ejemplo de uso:

@DubboReference(check = false)
private OrderService orderService;
复制代码

Si no lo agregamos y el servicio no se inicia, hará que el servicio de la persona que llama no se inicie. El servicio no pudo iniciarse. como sigue:

imagen.png

validación de parámetros

La función de verificación de parámetros se implementa en base a  JSR303.El  usuario solo necesita identificar la anotación de verificación del estándar JSR303 y realizar la verificación declarando el filtro.

Primero agregamos dependencias

<dependency>
  <groupId>javax.validation</groupId>
  <artifactId>validation-api</artifactId>
  <version>1.0.0.GA</version>
</dependency>
<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-validator</artifactId>
  <version>4.2.0.Final</version>
</dependency>
<dependency>
  <groupId>org.glassfish</groupId>
  <artifactId>javax.el</artifactId>
  <version>3.0.1-b11</version>
</dependency>
复制代码

El objeto DTO aumenta el límite de parámetros y agrega un ID de usuario simple que no puede estar vacío

@Data
public class QueryOrderDto implements Serializable {

    @NotNull(message = "userId is not null")
    private String userId;

    private String shopId;

    private String goodsId;
}
复制代码

dirección de interfaz:

public interface OrderService {

    String createOrder(CreateOrderDto createOrderDto);

    @interface QueryOrder{}
    List<OrderDto> queryOrder(QueryOrderDto queryOrderDto);
}
复制代码

Implementación de la interfaz:

imagen.png

Verifica el efecto:

javax.validation.ValidationException: Failed to validate service: com.ssm.rpc.service.OrderService, method: queryOrder, cause: [ConstraintViolationImpl{interpolatedMessage='userId is not null', propertyPath=userId, rootBeanClass=class com.ssm.rpc.dto.QueryOrderDto, messageTemplate='userId is not null'}]

	at org.apache.dubbo.validation.filter.ValidationFilter.invoke(ValidationFilter.java:96)
	at org.apache.dubbo.rpc.protocol.FilterNode.invoke(FilterNode.java:61)
	at org.apache.dubbo.rpc.protocol.dubbo.filter.TraceFilter.invoke(TraceFilter.java:77)
	at  省略更多。。。
复制代码

Documentación de referencia

Supongo que te gusta

Origin juejin.im/post/7150314357262385182
Recomendado
Clasificación