我想我在這裏缺少的東西..我想創建簡單的兔子清單,它可以接受自定義對象作爲消息類型。現在按照文檔說使用兔子聽衆的春天amqp轉換器問題
在1.6以前的版本中,轉換JSON的類型信息必須在消息頭中提供,或者需要定製ClassMapper。從版本1.6開始,如果沒有類型信息頭,則可以從目標方法參數中推斷出該類型。
我把消息手動在儀表板用兔MQ ADM排隊,得到錯誤像
Caused by: org.springframework.messaging.converter.MessageConversionException: Cannot convert from [[B] to [com.example.Customer] for GenericMessage [payload=byte[21], headers={amqp_receivedDeliveryMode=NON_PERSISTENT, amqp_receivedRoutingKey=customer, amqp_deliveryTag=1, amqp_consumerQueue=customer, amqp_redelivered=false, id=81e8a562-71aa-b430-df03-f60e6a37c5dc, amqp_consumerTag=amq.ctag-LQARUDrR6sUcn7FqAKKVDA, timestamp=1485635555742}]
我的配置:
@Bean
public ConnectionFactory connectionFactory() {
CachingConnectionFactory connectionFactory = new CachingConnectionFactory("localhost");
connectionFactory.setUsername("test");
connectionFactory.setPassword("test1234");
connectionFactory.setVirtualHost("/");
return connectionFactory;
}
@Bean
RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) {
RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
rabbitTemplate.setMessageConverter(new Jackson2JsonMessageConverter());
return rabbitTemplate;
}
@Bean
public AmqpAdmin amqpAdmin() {
RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory());
return rabbitAdmin;
}
@Bean
public Jackson2JsonMessageConverter jackson2JsonMessageConverter() {
return new Jackson2JsonMessageConverter();
}
另外的問題是與此異常的消息是不是放回到隊列中。
我正在使用帶有amqp 1.6.1的spring boot 1.4。如上所示,我還沒有配置任何偵聽器容器。編輯1:我如上所述添加了jackson轉換器(對於spring引導不需要這個問題)並給出了rmq admin中的內容類型,但仍然在下面,如上所示。
Caused by: org.springframework.messaging.converter.MessageConversionException: Cannot convert from [[B] to [com.example.Customer] for GenericMessage [payload=byte[21], headers={amqp_receivedDeliveryMode=NON_PERSISTENT, amqp_receivedRoutingKey=customer, content_type=application/json, amqp_deliveryTag=3, amqp_consumerQueue=customer, amqp_redelivered=false, id=7f84d49d-037a-9ea3-e936-ed5552d9f535, amqp_consumerTag=amq.ctag-YSemzbIW6Q8JGYUS70WWtA, timestamp=1485643437271}]
BTW當前引導版本是1.4.4 –
我與上述一樣,同樣的錯誤 – user3444718
見我的編輯用於非常簡單的引導程序的一個例子。 '>我還沒有配置任何監聽器容器。「如果這是真的,那麼如何獲得轉換異常並不清楚。 –