以下是监听器的代码:
@SqsListener(value = "my-queue", deletionPolicy = SqsMessageDeletionPolicy.ON_SUCCESS)
public void handle(final MyObject obj) throws Exception {
// ...
}
上述链接的文档仅涉及将普通序列化对象发送到队列并读取,我认为接收SNS消息应该可以直接使用。但实际上我遇到了转换错误:
10:45:51.480 [simpleMessageListenerContainer-2] ERROR o.s.c.a.m.l.SimpleMessageListenerContainer - 处理消息时出现异常。 org.springframework.messaging.MessagingException: 调用处理程序方法时发生异常;嵌套异常是 org.springframework.messaging.converter.MessageConversionException: 找不到转换器以转换为类com.myproject.model.MyObject, 消息=GenericMessage
我还尝试创建一个外壳对象,看起来与上面链接的预期SNS Json格式相同,但我仍然遇到了相同的异常。唯一有效的类型是签名中的字符串。难道SNS不应该自动转换吗?
String
形式传递 - 一个 JSON 对象 -@NotificationMessage
调用一个转换器将负载转换为所需类的对象。 - mspfactory.setArgumentResolvers(List.of(new PayloadArgumentResolver(jacksonMessageConverter)));
改为factory.setArgumentResolvers(List.of(new NotificationMessageArgumentResolver(jacksonMessageConverter)));
- Yonatan Wilkof