Use Generic Envelope Types with GenericMessageConverter
masterThe default GenericMessageConverter supports single-level generic envelope types like Event<T>. The type parameter T is resolved at serialization by inspecting the runtime class of the field value.
Constraints:
Tmust be a non-generic concrete class (e.g.,Order, notList<Order>).- At least one field of type
Ton the envelope must be non-null during serialization. - Multi-level nesting (e.g.,
Wrapper<Event<T>>) is not supported. List<T>is supported only ifTis a non-generic concrete class.
// A generic envelope type
public class Event<T> {
private String id;
private T payload;
// getters/setters ...
}
// Enqueue
Event<Order> event = new Event<>("evt-123", order);
rqueueMessageEnqueuer.enqueue("order-queue", event);
// Consume
@RqueueListener(value = "order-queue")
public void onEvent(Event<Order> event) { ... }
// The serialized form encodes both the envelope class and the type parameter:
// {"msg":"...","name":"com.example.Event#com.example.Order"}