Your publisher is publishing as Text messages, which are a Structured Data Type (SDT) message, but trying to read as binary Bytes message. A TextMessage is a special type of SdtStream message, that only holds a single data element, the string payload. The first couple bytes you’re seeing (could be 2-6 bytes) are the length of the encoded String.
Generally, you do something like:
if (msg instanceof TextMessage) {
TextMessage tMsg = (TextMessage)msg;
String payload = tMsg.getText();
} else if (msg instanceof BytesMessage) {
BytesMessage bMsg = (BytesMessage)msg;
// if you know the payload is a String…
String payload = new String(bMsg.getData());
} else …
Something like that! Check what type the received message is and cast to that and work with that, rather than the supertype. Note: I’m just writing that out free-hand (might not be exact working code). But should point you in the right direction.