Closed Nephery closed 2 months ago
One problem with your change is that there are now two constructors with a single argument that are nullable so this will break backward compatibility.
@snicoll as an alternative solution, maybe you could create a public static MessageHeaderAccessor getMutableAccessor(Map<String, Object> headers, ...)
which delegates to a private MessageHeaderAccessor(Map<String, Object> headers)
constructor?
Then either change the new function's name or add a second parameter (like @Nullable Class<T> requiredType
) so that it doesn't conflict with the existing getMutableAccessor(Message<?> message)
?
This issue was split from PR: https://github.com/spring-projects/spring-framework/pull/33137
Add a constructor that lets users create a
MessageHeaderAccessor
object given only a headers map.This is a small optimization in high volume scenarios to avoid creating unnecessary
Message<?>
objects when you only have a headers map.The specific use case I'm looking at, is being able to create a
MessageHeaderAccessor
object to process headers from a "consolidated headers" object (such as from the Rabbit Binder or Solace Binder) created for aMessage<List<?>>
consumed from Spring Cloud Stream's batched consumers.e.g.: Being able to do something like this:
With the current implementation, instead of just being able to do:
I would need to do this, which is pointless if the accessor's constructor will just extract the headers from the
Message<?>
: