java - Spring Integration ServiceActivator 返回类型如何工作?

标签 java spring spring-integration

当你添加 @ServiceActivator方法上的注释,该方法可以有不同的返回类型,这似乎对服务有不同的影响:

@ServiceActivator(inputChannel = "..", outputChannel = "..")
public T messageReceiver() {...}

T可能在哪里

  • 无效
  • 对象
  • 消息处理程序

ServiceActivator 根据返回类型有何不同?我特别想知道 docs 中的那一行上面写着:

Return values from the annotated method may be of any type. If the return value is not a Message, a reply Message will be created with that object as its payload.

但我没有遵循这个,因为我看到人们从他们的 ServiceActivator 注释方法返回 MessageHandlers,他们不希望他们的 MessageHandlers 被包装为有效负载,对吗?

像这样:

@Bean
@ServiceActivator(inputChannel = "sendAsyncChannel", autoStartup="false")
public MessageHandler sendAsyncHandler() {
     return // some MessageHandler
}

最佳答案

您所指的是 @Bean 上的消息传递注释。这是一个有点不同的故事,它暗示与 POJO 方法调用方面无关。

我们在 MessageHandler @Bean 上使用 @ServiceActivator 为提供的 EventDrivenConsumer 端点注册 MessageHandler,当POJO方法样式时,为标有此@ServiceActivator方法的创建一个MethodInvokingMessageHandler

请在引用手册中查看更多信息:

https://docs.spring.io/spring-integration/docs/5.0.9.RELEASE/reference/html/overview.html#programming-tips 和:

https://docs.spring.io/spring-integration/docs/5.0.9.RELEASE/reference/html/configuration.html#annotations_on_beans

关于java - Spring Integration ServiceActivator 返回类型如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53509827/

相关文章:

java - 使用 OpenSmpp 从 SMSC 接收消息

java - 用于事务管理的 Spring + HibernateTemplate + AOP 不起作用

java - Hibernate 架构在部署时自动删除

spring - 如何从通用 MessageSource 启动 Spring Integration DSL 轮询器

java - 在 Android 中的 viewpager 和 tablayout 中查看 fragment 中的可见性检查

java - 是否可以仅使用文件名和参数来运行 java 文件?

java - 如何在 android 中正确实现插页式广告?

java - 在 Spring 3.1 中定义 View 解析器

spring-integration - Kafka 0.9 Spring Integration DSL 配置

spring-integration - 如何使用文件出站适配器移动锁定的文件