【发布时间】: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