Várias habilidades de uso comuns de Dubbo

Continue a criar, acelere o crescimento! Este é o terceiro dia da minha participação no "Nuggets Daily New Plan · October Update Challenge", clique para ver os detalhes do evento

Teste de desempenho do Dubbo

Através de testes, podemos inicialmente julgar que o desempenho da interface do dubbo é em torno de 9k -1w

Configurar vários registros Zk

Endereço de configuração do arquivo de propriedades:

#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
复制代码

provedor de serviço:

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

Consumidores de serviço:

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

Verifique na inicialização

Verifique se os serviços dependentes estão disponíveis na inicialização

Por padrão, o Dubbo verificará se os serviços dependentes estão disponíveis na inicialização. Se não estiver disponível, ele lançará uma exceção para impedir que a inicialização do Spring seja concluída, para que os problemas possam ser detectados antecipadamente ao ficar online. O padrão check="true ".

A verificação pode ser desativada por check="false". Por exemplo, ao testar, alguns serviços não se importam, ou há uma dependência circular, e uma parte deve iniciá-la primeiro.

Além disso, se o seu contêiner Spring for carregado lentamente ou você atrasar a referência do serviço por meio da programação da API, desative a verificação, caso contrário, quando o serviço estiver temporariamente indisponível, uma exceção será lançada e uma referência nula será obtida. ="false", sempre será Retorna uma referência que pode ser conectada automaticamente quando o serviço for restaurado.
Exemplo de uso:

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

Se não o adicionarmos e o serviço não for iniciado, isso fará com que o serviço do chamador não seja iniciado. O serviço falhou ao iniciar. do seguinte modo:

imagem.png

validação de parâmetro

A função de verificação de parâmetros é implementada com base no  JSR303  . O usuário precisa apenas identificar a anotação de verificação do padrão JSR303, e realizar a verificação declarando o filtro.

Primeiro adicionamos dependências

<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>
复制代码

O objeto DTO aumenta o limite do parâmetro e adiciona um userId simples que não pode estar vazio

@Data
public class QueryOrderDto implements Serializable {

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

    private String shopId;

    private String goodsId;
}
复制代码

endereço da interface:

public interface OrderService {

    String createOrder(CreateOrderDto createOrderDto);

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

Implementação da interface:

imagem.png

Verifique o efeito:

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  省略更多。。。
复制代码

Documentação de referência

Acho que você gosta

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