1

对于 POJO 生产,Camel 文档中提到 InOut 是默认设置。但是,如果我们使用 ProducerTemplate 的 sendBody(),是否还需要设置 @InOnly,如下例所示。

public class MyBean {

@Produce(uri = "direct:hello")
private ProducerTemplate producerTemplate;

@InOnly
void someInOnlyMethod()
{
...
producerTemplate.sendBody("mystr");
...
}
}

同样在下面的示例中,如果 direct:hello 从上面配置的没有 @InOnly 注释的 MyBean 对象中获取消息,我们是否需要 setExchangePattern 元素?

 <route>
 <from uri="direct:hello"/>
 <setExchangePattern pattern="InOnly"/>
 <to uri="mock:result"/>      
 </route>
4

1 回答 1

2

1) 不,当您使用生产者模板时,MEP 将根据您在模板上使用的方法进行设置。例如,所有发送方法都是 InOnly,所有请求方法都是 InOut。虽然有些方法有一个模式参数,您可以在其中指定 MEP。

2)不,您通常不必设置/更改 MEP。尽管在将消息发送到同时支持 InOnly 或 InOut(并且行为不同)的端点的情况下,您可能希望根据您的需要明确设置 MEP。

有关详细信息,请参阅这些 EIP

例如,JMS 端点可以执行 InOnly(仅发送到队列)或 InOut(通过 JMS 请求/回复)等。

于 2013-03-31T06:50:18.287 回答