我正在尝试使用 Spring JmsTemplate 发送 JMS 消息,如下所示。
jmsTemplate.convertAndSend(topicName, WebsocketMessage("<message content>"))
而且,我使用 MappingJackson2MessageConverter 作为消息转换器。我已使用包含“X-Correlation-Id”的行李字段配置了千分尺跟踪。
但是我面临以下错误。
jakarta.jms.JMSRuntimeException: AMQ139012: The property name 'x-correlation-id' is not a valid java identifier.
at org.apache.activemq.artemis.jms.client.ActiveMQMessage.checkProperty(ActiveMQMessage.java:911)
at org.apache.activemq.artemis.jms.client.ActiveMQMessage.setStringProperty(ActiveMQMessage.java:669)
at io.micrometer.jakarta9.instrument.jms.JmsPublishObservationContext.lambda$new$0(JmsPublishObservationContext.java:40)
at io.micrometer.tracing.handler.PropagatingSenderTracingObservationHandler.lambda$onStart$0(PropagatingSenderTracingObservationHandler.java:60)
at brave.baggage.BaggagePropagation$BaggageInjector.inject(BaggagePropagation.java:342)
at io.micrometer.tracing.brave.bridge.BravePropagator.inject(BravePropagator.java:53)
at io.micrometer.tracing.handler.PropagatingSenderTracingObservationHandler.onStart(PropagatingSenderTracingObservationHandler.java:59)
at io.micrometer.tracing.handler.PropagatingSenderTracingObservationHandler.onStart(PropagatingSenderTracingObservationHandler.java:35)
at io.micrometer.observation.ObservationHandler$FirstMatchingCompositeObservationHandler.onStart(ObservationHandler.java:149)
at io.micrometer.observation.SimpleObservation.notifyOnObservationStarted(SimpleObservation.java:214)
at io.micrometer.observation.SimpleObservation.start(SimpleObservation.java:161)
at io.micrometer.jakarta9.instrument.jms.MessageProducerInvocationHandler.invoke(MessageProducerInvocationHandler.java:57)
at jdk.proxy2/jdk.proxy2.$Proxy258.send(Unknown Source)
at org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java:657)
at org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java:634)
at org.springframework.jms.core.JmsTemplate.lambda$send$3(JmsTemplate.java:612)
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:530)
at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:610)
at org.springframework.jms.core.JmsTemplate.convertAndSend(JmsTemplate.java:687)
JMS 属性名称必须是有效的 Java 标识符,这就是不允许使用连字符(即 -)的原因。具体来说,JMS 1.1 和 2.0 规范的第 3.5.1 节都规定了。