rabbitmq 如何验证队列消息?

nr9pn0ug  于 2023-08-05  发布在  RabbitMQ
关注(0)|答案(1)|浏览(145)

目前我有这样的代码:

@RabbitListener(queues = "${rabbitmq.queue}")
public void receivedMessage(TransferPayment transferPayment) {
  log.info("Received message: {}", transferPayment);

  // TODO: please correct
  if (transferPayment.getData().getSecurity() != null &&
    transferPayment.getData().getNotification() != null &&
    transferPayment.getData().getTransfer() != null &&
    transferPayment.getData().getDisbursementDestination() != null &&
    transferPayment.getData().getDisbursementDestination().getThirpartyDestination() != null &&
    transferPayment.getData().getCustomer() != null &&
    transferPayment.getData().getCustomer().getIdentification() != null &&
    transferPayment.getData().getLoans() != null) {

    notificationUseCase.notifyPayment(transferPayment);
  }
}

字符串


的数据
我想改进条件,并能够以更干净的方式正确执行相同的验证。请记住,由于SonarLint的问题,我不能在条件中使用超过5个逻辑运算符,我也想纠正这一点。我使用的是干净的架构,这段代码在基础设施层,对象TransferPayment在域层。

cgvd09ve

cgvd09ve1#

您可以向消息处理程序工厂添加一个验证器,并使用@Valid注解参数;这使验证具体化。
https://docs.spring.io/spring-amqp/docs/current/reference/html/#async-annotation-driven-enable-signature
https://docs.spring.io/spring-amqp/docs/current/reference/html/#rabbit-validation
SonarLint问题我不能使用超过5个逻辑运算符
您可以通过将中间结果存储在本地布尔值中来减少条件计数,然后检查所有结果是否为真。

相关问题