Spring JMS 错误发送带有千分尺跟踪行李字段“X-Correlation-Id”的消息

问题描述 投票:0回答:1

我正在尝试使用 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)

websocket spring-jms micrometer
1个回答
0
投票

JMS 属性名称必须是有效的 Java 标识符,这就是不允许使用连字符(即 -)的原因。具体来说,JMS 1.1 和 2.0 规范的第 3.5.1 节都规定了。

https://issues.apache.org/jira/browse/ARTEMIS-2700

© www.soinside.com 2019 - 2024. All rights reserved.