我正在尝试在apache-camel路由中读取jms头.以下是我正在阅读正文和标题的路线.
String endPointTopic = "activemq:topic:geoLoc"; String endPointTopicOut = endPointTopic + "_outbox"; from(endPointTopic) .log("Message from Topic is ${body} & header is ${header.Action}") .to(endPointTopicOut);
基本上从日志中我可以看到以下内容,这意味着我能够读取正文而不是标题中的id.
来自Topic的消息是GeoLocationInfoDTO {id = 2,geoLocationUUId ='null',geoLocationName ='null',geoLocationDesc ='null',geoLocationPolygon ='null',geoLocationCenterLatitude ='null',geoLocationCenterLongitude ='null'}&header is
以下是我通过jms模板将消息发布到activeMQ的代码.
private MessageHeaders getMessageHeaders(HttpMethod action) { log.debug("DomainPublisher : getMessageHeaders"); MapheaderMap = new HashMap<>(); headerMap.put("Action", action); return new MessageHeaders(headerMap); } public void publish(BaseDTO dto, HttpMethod action) { log.debug("DomainPublisher : type is : {} : ", dto.getClass().getName()); getJmsMessagingTemplate().convertAndSend(topicMap.get(dto.getClass().getName()), dto, getMessageHeaders(action)); }
注意:我还尝试将标头ID记录为$ {header.id}而不是$ {header.Action},但没有任何内容被打印出来.
我还想知道jms消息可用的所有头文件.
您可以使用此示例中显示的所有标头和属性记录交换:
.to("log:like-to-see-all?level=INFO&showAll=true&multiline=true")
http://camel.apache.org/log.html
有关JMS头的更多信息,请访问:http://camel.apache.org/jms.html
可能的标题列表:
JMSCorrelationID - JMS相关ID.
JMSDeliveryMode - JMS传送模式.
JMSDestination - JMS目标.
JMSExpiration - JMS到期.
JMSMessageID - JMS唯一消息ID.
JMSPriority - JMS优先级(0表示最低优先级,9表示最高优先级).
JMSRedelivered - 是否重新传递了JMS消息.
JMSReplyTo - JMS回复目的地.
JMSTimestamp - JMS时间戳.
JMSType - JMS类型.
JMSXGroupID - JMS组ID.