Вы можете / должны использовать заголовки сообщений.
Помните, что вы управляете возвращаемым значением метода-обработчика. Если ваш метод-обработчик возвращает POJO, то платформа создаст из него Сообщение, копирующее определенные заголовки и т. Д. Однако, в вашем случае, если вы хотите контролировать все, что входит в Сообщение (включая заголовки), все, что вам нужно, это определить метод-обработчик, который возвращает сообщение (см. ниже):
@StreamListener(..)
@SendTo(..)
public Message<?> handle(String str) {
. . .
return MessageBuilder.withPayload(..).setHeader(..).setHeader(..).build();
}