【问题标题】:Pushing a HttpServletRequest into a RabbitMQ queue in Java将 HttpServletRequest 推入 Java 中的 RabbitMQ 队列
【发布时间】:2022-11-17 21:24:22
【问题描述】:

我正在使用 springboot 和 rabbitmq 对请求进行排队,稍后将由接收方处理。当我们发送任何对象时,MQ 发送器工作正常,但是当尝试将 HTTP 请求排队时它会抛出以下异常。

org.springframework.amqp.support.converter.MessageConversionException: Failed to convert Message content
    at org.springframework.amqp.support.converter.AbstractJackson2MessageConverter.createMessage(AbstractJackson2MessageConverter.java:463)
    at org.springframework.amqp.support.converter.AbstractMessageConverter.toMessage(AbstractMessageConverter.java:70)
    at org.springframework.amqp.support.converter.AbstractMessageConverter.toMessage(AbstractMessageConverter.java:58)
    at org.springframework.amqp.rabbit.core.RabbitTemplate.convertMessageIfNecessary(RabbitTemplate.java:1831)
    at org.springframework.amqp.rabbit.core.RabbitTemplate.convertAndSend(RabbitTemplate.java:1137)
    at org.springframework.amqp.rabbit.core.RabbitTemplate.convertAndSend(RabbitTemplate.java:1130)

将HTTP请求以JSON形式写入MQ时出现转换异常。

我们如何将这样的 HTTP 请求推送到 MQ,以便我可以在处理来自队列的请求时使用它来识别租户/安全/标头。

MQ Config、exchange、queue 和 binding 适用于普通对象。它仅针对 HttpServletRequest 类型具有此转换异常。

控制器和发送方法如下:

@PostMapping("/createRequestQueue")
public ResponseEntity<String> pushRequesttoQueue(HttpServletRequest request) {
    try {
        rabbitMQSender.send(request);
    }catch (Exception ex){
        ex.printStackTrace();
    }
    return ResponseEntity.ok("Request received successfully");
}
public void send(HttpServletRequest request) {
    try {
        rabbitTemplate.convertAndSend(exchange, engRoutingkey, request);
    }catch(Exception ex) {
        ex.printStackTrace();
    }
}

【问题讨论】:

    标签: servlets rabbitmq spring-rabbit


    【解决方案1】:

    那是不正确的。 HttpServletRequest 是一个 servlet 容器实体,与该容器紧密相关,当您将控制权返回给带有 ResponseEntity 的容器时,它结束了它的生命周期。

    您必须研究一种方法,将此请求转换为携带来自该 HTTP 请求的正文和标头的某些数据对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-14
      • 2022-06-16
      • 2018-10-20
      • 2015-10-22
      • 2012-11-24
      • 1970-01-01
      相关资源
      最近更新 更多