gpt4 book ai didi

java - Spring AMQP header 仅作为字符串返回

转载 作者:行者123 更新时间:2023-11-30 10:38:54 25 4
gpt4 key购买 nike

我正在使用带有 2.0.0 版 AMQP 快照的 Java Spring。我创建一个 AMQP 消息,发送它。在另一项服务中,我正确接收消息,除了 header 而不是接收类型对象,每个 header 都是字符串类型。

发布商代码:

Message responseMessage = MessageBuilder
.withBody(SerializationUtils.serialize(person))
.setContentType(MessageProperties.CONTENT_TYPE_SERIALIZED_OBJECT)
.setHeader("STUDENT_TYPE", "New") // Not part of person object but related
.setHeader("PET", getPet()) // This is a pet object
.build();
rabbitTemplate.send(responseMessage);

消费者代码:

Object messageBody = SerializationUtils.deserialize(amqpMessage.getBody());
Person person = (Person)messageBody;
MessageProperties properties = amqpMessage.getMessageProperties();
String type = properties.getHeaders().get("STUDENT_TYPE").toString();
Pet pet = (Pet)properties.getHeaders().get("PET");

当我运行上面的代码时,我将在消费者代码的最后一行失败并出现错误:无法将字符串转换为 Pet。消息没有问题,除了在消费者代码中接收到的每个 header 都是 String 类型。

USAGE: MessageBuilder.setHeader(String Key, Object Value);

USAGE: Properties.getHeaders() returns Map<String,Object>

每个 header 都有字符串/对象类型的键/值对。我已采取的解决方法还序列化了一个我想为其传递非字符串/整数值的 header ,但这似乎不在 header 的范围内。我错过了什么吗?

最佳答案

你需要将你的Pet序列化为字符串,在其他服务中获取到的时候反序列化。例如。你可以使用 fasterxml Jackson 并将其序列化为 JSON 字符串

关于java - Spring AMQP header 仅作为字符串返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39504784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com