2016-12-15 5 views
0

Aus irgendeinem Grund RabbitListener wird die ASCII-Darstellung anstelle der tatsächlichen ZeichenfolgeRabbitListener String als ASCII Rückkehr statt String

Kaninchen MQ Nachricht

Exchange-raw-cdr

Routing-Key-uk

zeigt

Redelivered
Priorität: 0

delivery_mode: 2

Header:

datei_name: /Users/shahbour/IdeaProjects/micro-services/file-sftp-service/ftp-inbound/LONSBC01.20161214142000.10120CB.ACT

content_encoding: UTF-8

content_type: text/plain

Sonus Networks, Inc.00000000FF 600000520000000000000128V04.02.05R000 0000000000000000000000000000ACT2016121414100000000000000000

aber was ich habe ist

83,111,110,117,115,32,78,101,116,119,111,114,107,115,44,32,73,110,99,46,48,48,48,48,48,48 , 48,48,70,70,54,48,48,48,48,48,53,50,48,48,48,48,48,48,48,48,48,48,48,48,48 , 49,50,56,86,48,52,46,48,50,46,48,53,82,48,48,48,32,48,48,48,48,48,48,48,48 , 48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,65,67,84,50,48 , 49,54,49,50,49,52,49,52,49,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48 , 48

Im Folgenden ist der Code ich verwende, aus einem anderen Programm alles ist Frühling Boot Standard

@RabbitListener(queues = {"fr-cdr.panel","uk-cdr.panel"}) 
public void messageHandler(Message<String> rawCdr, @Header String file_name) throws InterruptedException { 
    log.info(rawCdr); 

} 

der Hersteller wie unten

ist
@Bean 
    @ServiceActivator(inputChannel = "linesChannel") 
    public AmqpOutboundEndpoint amqpOutbound(AmqpTemplate amqpTemplate) { 
     AmqpOutboundEndpoint outbound = new AmqpOutboundEndpoint(amqpTemplate); 
     outbound.setExchangeName(exchangeName); 
     outbound.setRoutingKey(routingKey); 
     return outbound; 
    } 

Nach Debug-Modus das Problem ermöglicht zeigt

2016-12-16 07:46:03.714 DEBUG 81519 --- [cTaskExecutor-1] o.s.a.r.listener.BlockingQueueConsumer : Received message: (Body:'Sonus Networks, Inc.00000000FF600000520000000000000128V04.02.05R000 0000000000000000000000000000ACT2016121414100000000000000000' MessageProperties [headers={file_name=/Users/shahbour/IdeaProjects/micro-services/file-sftp-service/ftp-inbound/LONSBC01.20161214142000.10120CB.ACT}, timestamp=null, messageId=null, userId=null, receivedUserId=null, appId=null, clusterId=null, type=null, correlationId=null, correlationIdString=null, replyTo=null, contentType=text/plain, contentEncoding=UTF-8, contentLength=0, deliveryMode=null, receivedDeliveryMode=PERSISTENT, expiration=null, priority=0, redelivered=true, receivedExchange=raw-cdr, receivedRoutingKey=uk, receivedDelay=null, deliveryTag=1, messageCount=0, consumerTag=amq.ctag-15IUBH6oN_hheTvluP4YfQ, consumerQueue=uk-cdr.panel]) 
2016-12-16 07:46:03.717 WARN 81519 --- [cTaskExecutor-1] o.s.a.s.c.Jackson2JsonMessageConverter : Could not convert incoming message with content-type [text/plain] 
2016-12-16 07:46:03.724 DEBUG 81519 --- [cTaskExecutor-1] .a.r.l.a.MessagingMessageListenerAdapter : Processing [GenericMessage [payload=byte[127], headers={amqp_receivedDeliveryMode=PERSISTENT, amqp_receivedRoutingKey=uk, amqp_contentEncoding=UTF-8, amqp_receivedExchange=raw-cdr, amqp_deliveryTag=1, file_name=/Users/shahbour/IdeaProjects/micro-services/file-sftp-service/ftp-inbound/LONSBC01.20161214142000.10120CB.ACT, amqp_consumerQueue=uk-cdr.panel, amqp_redelivered=true, id=c645580a-6f8d-6649-1426-14d06fbc1ddf, amqp_consumerTag=amq.ctag-15IUBH6oN_hheTvluP4YfQ, contentType=text/plain, timestamp=1481867163721}]] 

Nach dem Auskommentieren des untenstehenden Jackson2JsonMessageConverter funktionierte alles perfekt.

@Bean 
    public MessageConverter jackson2json() { 
     return new Jackson2JsonMessageConverter(); 
    } 

Auch wenn es wurde Warnung erklärt, dass es nicht

+0

Bitte zeigen Sie Ihren Listener Container Factory Bean; Aktivieren Sie auch die DEBUG-Protokollierung, wenn Sie es nicht aus dem Protokoll herausfinden können, veröffentlichen Sie das Protokoll irgendwo, damit wir es uns ansehen können. –

+0

@GaryRussell sollte 'Jackson2JsonMessageConverter' deklarieren Ergebnis in den obigen Effekt oder es ist ein Fehler? – Shahbour

+0

Ja; Sieh meine Antwort. –

Antwort

0

Frühling Stiefel MessageConverter im Anwendungskontext erklärt wird, wird der Hörer Behälter Adapters Nachrichtenumformer automatisch konfigurieren, wenn eine einzelne Bohne vom Typ umwandeln kann.

Dieser Konverter erwartet einen Inhaltstyp von application/json.

Wenn Sie einige Nachrichten, die text/plain und einige sind, die application/json sind, sollten Sie eine ContentTypeDelegatingMessageConverter mit einem SimpleMessageConverter und JSON-Wandler konfiguriert werden.

+0

Danke für die Erklärung – Shahbour