Affects:

org.springframework.boot:spring-boot-starter-websocket:jar:2.3.1.RELEASE org.springframework:spring-messaging:jar:5.2.7.RELEASE org.springframework:spring-websocket:jar:5.2.7.RELEASE

Getting exception

Exception in thread "clientInboundChannel-4" org.springframework.messaging.MessageDeliveryException: Failed to handle GenericMessage [payload=byte[0], headers={simpMessageType=MESSAGE, stompCommand=SEND, nativeHeaders={destination=[/queue/test]}, simpSessionAttributes={}, simpHeartbeat=[J@3e20fadf, opentracing.span=5dbdcde08b48bc8d:5dbdcde08b48bc8d:0:0 - /queue/test, id=367590c7-69c9-62ad-514f-14219165de8a, simpSessionId=22add5ae-a93c-bb44-bf2a-04b7529c73df, simpDestination=/queue/test, timestamp=1598333820847}] to org.springframework.messaging.support.ExecutorSubscribableChannel$SendTask@61891fa8 in StompBrokerRelay[ReactorNettyTcpClient[reactor.netty.tcp.TcpClientDoOn@3daf0663]]; nested exception is java.lang.IllegalStateException: No header accessor (not using the SimpMessagingTemplate?): GenericMessage [payload=byte[0], headers={simpMessageType=MESSAGE, stompCommand=SEND, nativeHeaders={destination=[/queue/test]}, simpSessionAttributes={}, simpHeartbeat=[J@3e20fadf, opentracing.span=5dbdcde08b48bc8d:5dbdcde08b48bc8d:0:0 - /queue/test, id=367590c7-69c9-62ad-514f-14219165de8a, simpSessionId=22add5ae-a93c-bb44-bf2a-04b7529c73df, simpDestination=/queue/test, timestamp=1598333820847}], failedMessage=GenericMessage [payload=byte[0], headers={simpMessageType=MESSAGE, stompCommand=SEND, nativeHeaders={destination=[/queue/test]}, simpSessionAttributes={}, simpHeartbeat=[J@3e20fadf, opentracing.span=5dbdcde08b48bc8d:5dbdcde08b48bc8d:0:0 - /queue/test, id=367590c7-69c9-62ad-514f-14219165de8a, simpSessionId=22add5ae-a93c-bb44-bf2a-04b7529c73df, simpDestination=/queue/test, timestamp=1598333820847}]
        at org.springframework.messaging.support.ExecutorSubscribableChannel$SendTask.run(ExecutorSubscribableChannel.java:153)
        at io.opentracing.contrib.concurrent.TracedRunnable.run(TracedRunnable.java:30)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.IllegalStateException: No header accessor (not using the SimpMessagingTemplate?): GenericMessage [payload=byte[0], headers={simpMessageType=MESSAGE, stompCommand=SEND, nativeHeaders={destination=[/queue/test]}, simpSessionAttributes={}, simpHeartbeat=[J@3e20fadf, opentracing.span=5dbdcde08b48bc8d:5dbdcde08b48bc8d:0:0 - /queue/test, id=367590c7-69c9-62ad-514f-14219165de8a, simpSessionId=22add5ae-a93c-bb44-bf2a-04b7529c73df, simpDestination=/queue/test, timestamp=1598333820847}]
        at org.springframework.messaging.simp.stomp.StompBrokerRelayMessageHandler.handleMessageInternal(StompBrokerRelayMessageHandler.java:499)
        at org.springframework.messaging.simp.broker.AbstractBrokerMessageHandler.handleMessage(AbstractBrokerMessageHandler.java:256)
        at org.springframework.messaging.support.ExecutorSubscribableChannel$SendTask.run(ExecutorSubscribableChannel.java:144)
        ... 4 more

stomp configured with

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {


    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {

        String rabbitMqHost = Environment.getProperty("rabbitmq.host", "localhost");
        int rabbitMqPort = Environment.getIntProperty("rabbitmq.port", 61613);
        String rabbitMqUsername = Environment.getProperty("rabbitmq.username", "guest");
        String rabbitMqPassword = Environment.getProperty("rabbitmq.password", "guest");

        config.setUserDestinationPrefix("/user")
            .setApplicationDestinationPrefixes("/app", "/user")
            .enableStompBrokerRelay("/topic", "/queue", "/temp-queue/")
            .setRelayHost(rabbitMqHost)
            .setRelayPort(rabbitMqPort)
            .setClientLogin(rabbitMqUsername)
            .setClientPasscode(rabbitMqPassword);
    }

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry
    .addEndpoint("/stomp")
    .setAllowedOrigins("*");
  }


}

Client code

const { Client } = require("@stomp/stompjs");

let client = new Client({
  webSocketFactory: () => new WebSocket(`wss://server-address/stomp`),
  debug: (msg) => {
    console.log(new Date(), msg);
  }
});

client.onConnect = () => {
  client.publish({
    destination: "/queue/test",
    headers: {}
  });
};

client.activate();

Comment From: cameronbraid

Found the cause https://github.com/opentracing-contrib/java-spring-cloud/issues/301