2016-03-22 19 views
0

İstisna atabilecek özel bir işlemci modülü hazırladım.Rabbitmq veri yolu ile özel işlemci özel durumunu yönetme

Ancak özel durum oluştuğunda, stacktrace'i günlük dosyasında veya stdout'ta göremiyorum.

Bu benim örnek kod:

@Transformer(inputChannel = "input", outputChannel = "output") 
public String transform(final String payload) { 
    if (StringUtils.isEmpty(payload)) { 
     throw new MessageConversionException("payload is empty"); 
    } 

    logger.warn("log|warn: {}", payload); 

    logger.debug("log|debug: {}", payload); 

    return payload.toUpperCase(); 
} 

size sorunun ne olabilir? peşin

sayesinde kullandığınız XD sürümü

Simon

cevap

0

Sorun, boş dizenin sonraki akışa gönderilmemesidir.

0

? Ben sadece 1.3.1 sürümü ile test edilmiş ve konteyner günlüğüne Tamam duruma bakın ...

2016-03-22T08:55:27-0400 1.3.1.RELEASE WARN xdbus.foo.0-1 retry.RejectAndDontRequeueRecoverer - Retries exhausted for message (Body:'2016-03-22 
... 
Caused by: org.springframework.amqp.support.converter.MessageConversionException: foo 
... 

Sana DEBUG günlüğü etkinleştirmek öneririz. Ancak, Mine, WARN altında çıktı.

+0

Cevabınız için teşekkür ederiz. 1.3.0 sürümünü kullanıyorum. En son ile deneyeceğim. –

+0

En son sürümle (1.3.1) denedim ama işe yaramıyor. Ayrıca günlük seviyesini değiştirdim (WARN to DEBUG), fakat stacktrace'i göremiyorum. –

+0

O zaman kodunuzun geri kalanını görmem gerekiyor. –

0

Bu benim örnek kod: ModuleConfiguration.class

package com.mypackage.xdmodule; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.integration.channel.DirectChannel; 
import org.springframework.integration.config.EnableIntegration; 
import org.springframework.messaging.MessageChannel; 

@Configuration 
@EnableIntegration 
public class ModuleConfiguration { 

    @Autowired 
    private CustomProcessor processor; 

    @Bean 
    public MessageChannel input() { 
    return new DirectChannel(); 
    } 

    @Bean 
    public MessageChannel output() { 
    return new DirectChannel(); 
    } 

} 

Benim akışı

stream create --definition "http | transform --expression=payload.toUpperCase() | custom-processor | transform --expression=1/0 | log" --name custom-stream --deploy 

CustomProcessor.class

package com.mypackage.xdmodule; 

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 
import org.springframework.integration.annotation.MessageEndpoint; 
import org.springframework.integration.annotation.Transformer; 
import org.springframework.messaging.converter.MessageConversionException; 
import org.springframework.util.StringUtils; 

@MessageEndpoint 
public class CustomProcessor { 

    private static final Logger logger = LoggerFactory.getLogger(CustomProcessor.class); 

    @Transformer(inputChannel = "input", outputChannel = "output") 
    public String transform(final String payload) { 
     if (StringUtils.isEmpty(payload)) { 
      logger.error("payload is empty"); 
      throw new MessageConversionException("payload is empty"); 
     } 

     logger.warn("log|warn: {}", payload); 

     logger.debug("log|debug: {}", payload); 

     return payload.toUpperCase(); 
    } 
} 

Ben de bu eklendi gelmiş xd-container-logback.groovy dosyasındaki satır:

logger("com.mypackage.xdmodule", DEBUG, ["STDOUT", "FILE", "AMQP"], true) 
İlgili konular