Spring integration spring集成在发送到订阅者时会丢失头
我正在使用spring与hornetQ的集成。问题是我在消息(方法)中放置了一个自定义头,但是当它到达订阅者时,头不再可用。我需要设置一些配置属性来保留标题吗 应用程序接收消息(我可以在控制台日志中看到Spring integration spring集成在发送到订阅者时会丢失头,spring-integration,Spring Integration,我正在使用spring与hornetQ的集成。问题是我在消息(方法)中放置了一个自定义头,但是当它到达订阅者时,头不再可用。我需要设置一些配置属性来保留标题吗 应用程序接收消息(我可以在控制台日志中看到方法头,因此我知道它实际上得到了正确的消息)。它基本上只是将消息路由到出站队列,以便客户端可以订阅它(如果有更干净的方法,请让我知道) 您的问题不在DefaultJmsHeaderMapper.fromHeaders中吗: if (value != null && SUPPORTE
方法
头,因此我知道它实际上得到了正确的消息)。它基本上只是将消息路由到出站队列,以便客户端可以订阅它(如果有更干净的方法,请让我知道)
您的问题不在
DefaultJmsHeaderMapper.fromHeaders
中吗:
if (value != null && SUPPORTED_PROPERTY_TYPES.contains(value.getClass())) {
try {
String propertyName = this.fromHeaderName(headerName);
jmsMessage.setObjectProperty(propertyName, value);
}
其中支持的属性类型为:
private static List<Class<?>> SUPPORTED_PROPERTY_TYPES = Arrays.asList(new Class<?>[] {
Boolean.class, Byte.class, Double.class, Float.class, Integer.class, Long.class, Short.class, String.class });
private static list您确实是对的。我正在传递一个枚举值,但它未能序列化为字符串(尽管它将使用toString()方法)。当传递HttpMethod.POST.name()时,它起作用了。
@ServiceActivator(inputChannel = "partsInboundChannel")
public void processPart(final Message message) {
...message.getHeaders does not contain the "Method" header
}
if (value != null && SUPPORTED_PROPERTY_TYPES.contains(value.getClass())) {
try {
String propertyName = this.fromHeaderName(headerName);
jmsMessage.setObjectProperty(propertyName, value);
}
private static List<Class<?>> SUPPORTED_PROPERTY_TYPES = Arrays.asList(new Class<?>[] {
Boolean.class, Byte.class, Double.class, Float.class, Integer.class, Long.class, Short.class, String.class });