org.apache.camel.NoTypeConversionAvailableException: No type converter available to convert from type:

后端 未结 2 407
醉话见心
醉话见心 2021-01-23 09:40

I have multipart file in the first place and I want to send it to camel pipeline and save this file with original name.

my code:

@Autowired
ProducerTempl         


        
相关标签:
2条回答
  • 2021-01-23 10:19

    You have to add the service discovery file named TypeConverter in the META-INF directory.

    src\main\resources\META-INF\services\org\apache\camel\TypeConverter 
    

    This file contains the fully qualified name of the @Converter class.

    e.g

    mypackage.MultiPartFileToFileConvertor 
    

    Also see the example from Camel in action 2 in Github https://github.com/camelinaction/camelinaction2/tree/b6a43abf9e0d4ec4e3753ebd735bb3448f98194b/chapter3/converter .

    Also the book Chapter 3.6 explains how the discovery and loading of custom converters work in full detail.

    0 讨论(0)
  • 2021-01-23 10:36

    An example of a type converter using SpringBoot which will be automatically picked up using Camel 2.23.0 or later.

    @Component
    public class MyPackageTypeConverter implements TypeConverters {
    
      private final ObjectMapper mapper;
    
      @Autowired
      public MyPackageTypeConverter(ObjectMapper mapper) {
        this.mapper = mapper;
      }
    
      @Converter
      public byte[] myPackageToByteArray(MyPackage source) {
        try {
          return mapper.writeValueAsBytes(source);
        } catch (JsonProcessingException e) {
          throw new RuntimeException(e);
        }
      }
    
      @Converter
      public MyPackage byteArrayToMyPackage(byte[] source) {
        try {
          return mapper.readValue(source, MyPackage.class);
        } catch (IOException e) {
          throw new RuntimeException(e);
        }
      }
    
    }
    
    0 讨论(0)
提交回复
热议问题