在pojo中的producer.sendBodyAndHeader上设置AMQ标头

时间:2017-07-26 03:58:30

标签: java apache-camel activemq

我正在使用activemq-camel-5.12.0和camel 2.15.2从POJO发送消息。使用sendBodyAndHeader(endpointString,msg,headerName,headerValue)工作得很好但是当我尝试使用sendBodyAndHeader(endpointString,msg,Map)发送消息并设置多个头时,我得到以下异常:

java.lang.IllegalArgumentException: defaultEndpoint must be specified
at org.apache.camel.util.ObjectHelper.notNull(ObjectHelper.java:293)
at org.apache.camel.impl.DefaultProducerTemplate.getMandatoryDefaultEndpoint(DefaultProducerTemplate.java:462)
at org.apache.camel.impl.DefaultProducerTemplate.sendBodyAndHeader(DefaultProducerTemplate.java:371)
at com.jcsoft.mq.CamelSender.sendToQueue(CamelSender.java:46)

特别是我编码:

producer = (ProducerTemplate) 
ApplicationContextHolder.getContext().getBean("camelTemplate");

HashMap<String, Object> map = new HashMap<String, Object>();
map.put(ScheduledMessage.AMQ_SCHEDULED_DELAY, new Long(15000));
if (correlId!=null) {
    map.put("JMSCorrelationID", correlId);
}
producer.sendBodyAndHeader("activemq:queue:" + name + "?exchangePattern=InOnly", msg, map);

请帮忙!

感谢。

1 个答案:

答案 0 :(得分:0)

您应该使用sendBodyAndHeaders,例如结尾为..s的方法来指示多个标头。该方法采用Map参数。