RabbitMQ消息转换问题

潘德005

在使用者端消费消息后,将消息转换为对象格式时遇到问题。我无法转换回Student对象。仅供参考,在生产者端使用spring RabbitTemplate,在消费者端使用纯Java api(注意#:我不能在消费者端使用spring)

问题: org.codehaus.jackson.map.JsonMappingException:无法从JSON字符串实例化类型[简单类型,类com.steelwedge.util.Student]的值;org.codehaus.jackson.map.deser.std.StdValueInstantiator.createFromString(StdValueInstantiator.org.org.codehaus.jackson.map.deser.std.StdValueInstantiator._createFromStringFallbacks(StdValueInstantiator.java:379)上没有单字符串构造函数/工厂方法java:268)org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromString(BeanDeserializer.java:765)at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:585)

生产者代码:(使用Spring-RabbitTemplate)

    Student student = new Student();
    student.setCompany("RLR");
    student.setName("Pandi");

    String jsonString =  new ObjectMapper().unMarshall(student);
    template.convertAndSend(jsonString);

消费者代码:

String message = null;
             delivery = consumer.nextDelivery(100);
     if (delivery != null) {
        message = new String(delivery.getBody());
     }

             ObjectMapper mapper = new ObjectMapper();
         Student apiRequest = mapper.readValue(message, Student.class);
加里·罗素

我不确定您的unMarshall()方法是什么,但是我只是用Jackson2进行了测试,没有任何问题。

Foo foo = new Foo();
foo.setFoo("foo");
foo.setBar("bar");
String fooString = new ObjectMapper().writeValueAsString(foo);
template.convertAndSend("", "foo", fooString);

Channel channel = cf.createConnection().createChannel(false);
GetResponse response = channel.basicGet("foo", true);
String in = new String(response.getBody());
Foo fooIn = new ObjectMapper().readValue(in, Foo.class);
System.out.println(fooIn);

但是,您可以简化发送方,并且该框架将负责转换...

template.setMessageConverter(new Jackson2JsonMessageConverter());
template.convertAndSend("", "foo", foo);

response = channel.basicGet("foo", true);
in = new String(response.getBody());
fooIn = new ObjectMapper().readValue(in, Foo.class);
System.out.println(fooIn);

编辑:

刚刚在Jackson 1(codehaus)上进行了测试,没有任何问题...

Foo foo = new Foo();
foo.setFoo("foo");
foo.setBar("bar");
String fooString = new ObjectMapper().writeValueAsString(foo);
template.convertAndSend("", "foo", fooString);

Channel channel = cf.createConnection().createChannel(false);
GetResponse response = channel.basicGet("foo", true);
String in = new String(response.getBody());
Foo fooIn = new ObjectMapper().readValue(in, Foo.class);
System.out.println(fooIn);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

RabbitMQ消息转换问题

来自分类Dev

关于Rabbitmq消息持久性机制的问题

来自分类Dev

Mule Studio 6.0.3中的转换消息(Data Weaver)中的问题

来自分类Dev

RabbitMQ渠道闲置问题| 如何恢复未确认的AMQP消息| Javaclient使用者

来自分类Dev

批量使用消息-RabbitMQ

来自分类Dev

RabbitMQ队列消息

来自分类Dev

RabbitMq:替换重复的消息

来自分类Dev

RabbitMQ可靠的消息传递

来自分类Dev

RabbitMQ中消息丢失

来自分类Dev

RabbitMQ的消息签名

来自分类Dev

MassTransit RabbitMq发送消息

来自分类Dev

复用RabbitMQ消息

来自分类Dev

rabbitmq / logstash丢失的消息

来自分类Dev

无法收到消息RabbitMQ

来自分类Dev

Rabbitmq 中的消息标签

来自分类Dev

RabbitMQ 消息状态

来自分类Dev

RabbitMQ 消耗最近的消息

来自分类Dev

rabbitmq 如何同步消息?

来自分类Dev

RabbitMQ和Node.js将消息缓冲区转换为JSON

来自分类Dev

无法使用 RabbitMQ 源 + 日志接收器流转换消息异常

来自分类Dev

Spring AMQP:RabbitMQ 延迟消息交换:`amqp_delay` 未转换为 `x-delay`

来自分类Dev

RabbitMQ消息生命周期重播消息

来自分类Dev

消费未确认的RabbitMq消息

来自分类Dev

RabbitMQ / AMQP中的消息组

来自分类Dev

确认RabbitMQ消息是否超时?

来自分类Dev

RabbitMQ-消息传递顺序

来自分类Dev

通过websocket发送RabbitMQ消息

来自分类Dev

RabbitMQ中的死信死信消息

来自分类Dev

Rebus停止从RabbitMQ检索消息