我正在使用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);
请帮忙!
感谢。
答案 0 :(得分:0)
您应该使用sendBodyAndHeaders
,例如结尾为..s
的方法来指示多个标头。该方法采用Map
参数。