gpt4 book ai didi

java - 自动将 JSON 字节从 RabbitMQ 队列转换为对象

转载 作者:太空宇宙 更新时间:2023-11-04 12:37:17 25 4
gpt4 key购买 nike

是否可以配置Spring AMQP,以便它自动将队列中的消息(本质上是JSON字符串)转换为所需类型的对象?

到目前为止我已经尝试过:

1)我的cfg:

<rabbit:listener-container connection-factory="rabbitConnectionFactory" message-converter="jsonMessageConverter">
<rabbit:listener ref="foo" method="listen" queue-names="test_queue"/>
</rabbit:listener-container>
<bean id="foo" class="foo.FooListener"/>
<bean id="jsonMessageConverter" class="org.springframework.amqp.support.converter.JsonMessageConverter"/>

2) 我的监听器 FooListener 有方法 listen(FooMessage foo) { ... }

3) 我的 FooMessage 只是简单的 POJO,test_queue 中的消息只是 JSON 格式的 FooMessage 序列化实例。

所以它不起作用,Spring声称有listen(byte[] msg)方法:

java.lang.NoSuchMethodException:foo.FooListener.listen([B)

可以吗?

最佳答案

好吧,实际上这个东西在 Spring AMQP 中甚至在 1.6 之前的版本中也能发挥作用。问题是我的消息的 content-type 不正确,它只是 text/plain

如果以适当的方式发送带有 json 的消息,请说

template.convertAndSend("test_queue", "test_queue", new FooMessage("blablabla","blabla"));

正确设置模板:

<rabbit:template id="amqpTemplate"
connection-factory="rabbitConnectionFactory"
message-converter="jsonMessageConverter"
/>
<bean id="jsonMessageConverter" class="org.springframework.amqp.support.converter.Jackson2JsonMessageConverter"/>

so 方法 listen(FooMessage foo) { ... } 是通过消息中自动创建的 FooMessage 类型的对象来调用的。

关于java - 自动将 JSON 字节从 RabbitMQ 队列转换为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37193747/

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