2013-03-11 45 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); 
相關問題