如果我们使用ProducerTemplate的sendBody方法,我们是否需要@InOnly注释或<setexchangepattern pattern =“InOnly”> </setexchangepattern>

时间:2013-03-28 14:05:43

标签: apache-camel

对于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>

1 个答案:

答案 0 :(得分:2)

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

2) 不,你经常没有设置/更改MEP。虽然在您向支持InOnly或InOut(并且行为不同)的端点发送消息的情况下,您可能希望根据需要设置MEP。

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

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