Spring cloud stream solace + Solace distributed tracing

Hello BenGottstein , thanks for the quick reply!

Sorry, but I didn’t fully understood your suggested solution, could you elaborate a bit more?

We are using SCSt configured like this, which under the hood is using Jcsmp if I got it right.

I already tried the configuration mentioned before, but I think I’m missing the part on how to combine JMS + SCSt

This is how we configure our app:


  cloud:
    function:
      definition: "log|routeCreateInternalReturn;"
      …
    stream:
      function:
        bindings:
          log|routeCreateInternalReturn-in-0: routeCreateInternalReturn-in-0
          …
      binders:
        solace:
          type: solace
          environment:
            solace:
              java:
                msgVpn: \${SOLACE_VPN}
                clientPassword: \${SOLACE_PASSWORD}
                clientUsername: \${SOLACE_USERNAME}
                host: \${SOLACE_HOST}

We are happy with the SCSt ways of working, meaning we’re using cloud functions to receive events, and for publishing we have a generic producer:


    fun publish(message: Any, topic: String, headers: Map<String, Any> = emptyMap()) {
        val payload = mapper.writeValueAsString(message)
        val springMessage = MessageBuilder.withPayload(payload).copyHeaders(headers).build()
        logger.info("Publishing message $springMessage to topic $topic")
        streamBridge.send(topic, springMessage)

I already took a look before posting to the manual propagation in Jcsmp, but because we’re using SCSt abstraction layer, I couldn’t figure out where to add the propagation context, since we don’t have access to the lower level (JCSMP) publisher

Is it possible to keep functions / SCSt approach using the JMS Binder? Is it only possible to have the context propagation using JMS and not SCSt?

Thank you!