对于POJO生成,Camel文档中提到InOut是默认值。 但是,如果我们使用ProducerTemplate的sendBody(),是否还需要设置@InOnly,如下例所示。
public class MyBean {
@Produce(uri = "direct:hello")
private ProducerTemplate producerTemplate;
@InOnly
void someInOnlyMethod()
{
...
producerTemplate.sendBody("mystr");
...
}
}
类似地,在下面的示例中,如果direct:hello从上面配置的MyBean对象获取的消息没有@InOnly注释,我们是否需要setExchangePattern元素?
<route>
<from uri="direct:hello"/>
<setExchangePattern pattern="InOnly"/>
<to uri="mock:result"/>
</route>
答案 0 :(得分:2)
1) 否,当您使用生产者模板时,MEP将根据您在模板上使用的方法进行相应设置。例如,所有发送方法都是InOnly,所有请求方法都是InOut。虽然某些方法有一个模式参数,您可以在其中指定MEP。
2) 不,你经常没有设置/更改MEP。虽然在您向支持InOnly或InOut(并且行为不同)的端点发送消息的情况下,您可能希望根据需要设置MEP。
有关详细信息,请参阅这些EIP
例如,JMS端点可以执行InOnly(仅发送到队列)或InOut(通过JMS执行请求/回复)等。