0

我正在使用 Camel 的 POJO 生产,例如

{

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 的接口与在骆驼中用作主体的字符串对象。但是,如果我在这里尝试使用任何其他对象,我会从骆驼那里得到异常,说没有找到用于转换 java.io.InputStream 的 BeanInvocation 的 TypeConvertor。

我知道该对象是被允许的,它会在某处被提及。但我想解释为什么它会这样做,以及是否有办法解决这个问题。

4

2 回答 2

1

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

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

您所说的错误似乎是由于路线不匹配而引起的。估计消费有问题。

您能否发布确切的错误堆栈跟踪和消费者方法?

谢谢!

于 2013-03-14T09:04:37.857 回答
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);
于 2013-05-30T08:18:46.420 回答