2013-03-11 91 views
0

我正在使用Camel的POJO生成例如apache camel @Produce方法使用Object参数而不是字符串

{

public interface MyListener { 
    String sayHello(String name); 
} 

public class MyBean { 
    @Produce(uri = "activemq:foo") 
    protected MyListener producer; 

    public void doSomething() { 
     // lets send a message 
     String response = producer.sayHello("James"); 
    } 
} 

}

使用方法的sayHello与用作身体在骆驼字符串对象的接口。但是,如果我尝试使用任何其他对象在这里我从骆驼得到异常说没有找到BeanInvocation for java.io.InputStream的TypeConvertor。

我知道的是对象被允许它会被提到某处。但我想说明为什么这样做,如果有办法解决这个问题。

回答

1

我还没有真正使用过POJO消息。也许,有经验的用户可以更好地帮助你。

但据我所知,它应该能够支持任何类型的对象,而不仅仅是字符串。

您正在谈论的错误似乎是由于路线不匹配造成的。我猜测消费存在某种问题。

你可以请发布确切的错误stacktrace和消费者的方法?

谢谢!

0

现在正在努力解决同样的问题。唯一的解决办法显而易见,到目前为止是使用@EndpointInject代替@Produce - 那么你得到ProducerTemplate和发布任何对象:

@EndpointInject(uri = "seda:report-send") 
    ProducerTemplate reportSender; 

现在你可以做

Object myObject = new Object(); 
    reportSender.sendBody(myObject); 

甚至

Object myObject = new Object(); 
    Map<String, Object> headers = new HashMap<String, Object>(); 
    headers.put("Subject", "Mail subject"); 
    headers.put("contentType", "text/plain"); 
    reportSender.sendBodyAndHeaders(myObject, headers); 
相关问题