java - @Header 注释未按预期工作

标签 java spring-integration

我正在开发一个 spring 集成项目 (1.0.2),但无法让 @Header 注释工作。

这是我的服务激活器:

@Component
public class MyTransformer {
    @ServiceActivator(inputChannel = "inChannel", outputChannel = "outChannel")
    public String transform(final Message<?> message,
                            @Header(value = "eventId") final Long id,
                            @Header(value = "error", required = false) final Throwable throwable) {
        return throwable == null
                ? "event [" + eventId +"]"
                : "event [" + eventId +"] error: " + throwable.getMessage();
    }
}

错误消息如下:

Caused by: java.lang.IllegalArgumentException: Wrong number of arguments. Expected types {class java.lang.Object, class java.lang.Long, class java.lang.Throwable}, but received values {[Payload=parp][Headers={eventId=888Foo, error=java.lang.IllegalArgumentException: Invalid message content parp, springintegration_timestamp=1277803938244, springintegration_id=726d0769-bd27-4d95-a9ea-640c1f807065}]}.
    at org.springframework.integration.util.DefaultMethodInvoker.invokeMethod(DefaultMethodInvoker.java:71)
    at org.springframework.integration.handler.MessageMappingMethodInvoker.doInvokeMethod(MessageMappingMethodInvoker.java:160)
    at org.springframework.integration.handler.MessageMappingMethodInvoker.invokeMethod(MessageMappingMethodInvoker.java:107)
    at org.springframework.integration.handler.ServiceActivatingHandler.handleRequestMessage(ServiceActivatingHandler.java:49)
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:91)
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:59)

我做错了什么?

最佳答案

当然,Event Id 应该是 String,而不是 Long。

这样就解决了。

关于java - @Header 注释未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3139713/

相关文章:

spring-integration - 使用 DSL 的 Spring Integration JDBC 出站 channel 适配器

spring-boot - Spring Cloud 流 + quartz

java - 文件入站 channel 无法读取文件

spring-integration - 在 spring-integration 或 xd 中编码密码

java - 使用内存中的字节数组(没有物理文件)创建 Java File 对象(或等效对象)

java - C# 到 JAVA 代码等效(删除字符串中的多余空格)

java - 哈希集中链表桶的最大长度?

java - Java 堆中存在许多 java.time.ZoneRegion 实例。难道 ZoneId 实例不应该被缓存吗?

spring-boot - Spring 集成 Http 与 Spring Boot 和 @RequestMapping

java - 在java中将一个对象乘以一个整数?