gpt4 book ai didi

java - convertAndSend 不能在 listener 收到消息时强制转换

转载 作者:搜寻专家 更新时间:2023-11-01 03:18:15 25 4
gpt4 key购买 nike

我正在使用 RabbitMQ 将消息发送到队列,在消费者中我得到它,但我无法转换它。

当我发送它时,我会这样做。

rabbitTemplate.convertAndSend("myExchange", "binding", MyObject);

MyObject 是在该项目中创建的自定义对象。在另一个项目中,我创建了完全相同的 MyObject.class(但我知道对象签名不一样)。

我的听众的转换集如下。

Jackson2JsonMessageConverter jsonMessageConverter() {
Jackson2JsonMessageConverter messageConverter = new Jackson2JsonMessageConverter();
messageConverter.setClassMapper(classMapper());

return messageConverter;
}

private ClassMapper classMapper() {
DefaultClassMapper classMapper = new DefaultClassMapper();
classMapper.setDefaultType(MyObject.class);
return classMapper;
}

因此,在我的监听器中,以下代码不起作用。我注意到正文带有 [B@1232(byte[232]

@Override
public void onMessage(final Message message) {
final MyObject myObject = (MyObject) messageConverter.fromMessage(message);

我如何实现这一目标?

最佳答案

将 MyObject 类放在一个单独的 jar 中。从发件人和收件人那里引用这个新的 jar。

附加信息
字符串是一个对象。将您的对象转换为 json(在字符串中)并将 jsonString 作为第三个参数传递给 convertAndSend。

在收件人中你应该做这样的事情:

final String jsonString = (String) messageConverter.fromMessage(message);

关于java - convertAndSend 不能在 listener 收到消息时强制转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40141678/

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