Tag: spring integration

使用Java DSL进行Spring集成的动态TCP服务器

我试图通过读取包含连接细节的属性文件来创建TCP服务器和客户端。 我在下面的参考文档(9.20动态和运行时集成流程)的帮助下使用动态和运行时集成流程 代码在创建客户端时工作正常,但是当我使用相同代码中的更改创建服务器时,如下所示: IntegrationFlow flow = f -> f .handle(Tcp.inboundAdapter(Tcp.netServer(2221) .serializer(TcpCodecs.crlf()) .deserializer(TcpCodecs.lengthHeader1()) .id(“server”))) .transform(Transformers.objectToString()); IntegrationFlowRegistration theFlow = this.flowContext.registration(flow).register(); 我收到以下错误: Caused by: java.lang.IllegalArgumentException: Found ambiguous parameter type [class java.lang.String] for method match: [public java.lang.Class org.springframework.integration.dsl.IntegrationComponentSpec.getObjectType(), public S org.springframework.integration.dsl.MessageProducerSpec.outputChannel(java.lang.String), public S org.springframework.integration.dsl.MessageProducerSpec.outputChannel(org.springframework.messaging.MessageChannel), public org.springframework.integration.ip.dsl.TcpInboundChannelAdapterSpec org.springframework.integration.ip.dsl.TcpInboundChannelAdapterSpec.taskScheduler(org.springframework.scheduling.TaskScheduler), public S org.springframework.integration.dsl.MessageProducerSpec.errorMessageStrategy(org.springframework.integration.support.ErrorMessageStrategy), public S org.springframework.integration.dsl.MessageProducerSpec.phase(int), public S org.springframework.integration.dsl.MessageProducerSpec.autoStartup(boolean), public S org.springframework.integration.dsl.MessageProducerSpec.sendTimeout(long)] […]

Group在RabbitMQ中收到消息,最好使用Spring AMQP?

我正在接收来自服务(S)的消息,该服务将每个单独的属性更改作为单独的消息发布到实体。 一个人为的例子是这样的实体: Person { id: 123 name: “Something”, address: {…} } 如果在同一事务中更新了名称和地址,则(S)将发布两条消息, PersonNameCorrected和PersonMoved 。 问题出在接收方,我正在存储此Person实体的投影,每个属性更改都会导致写入数据库。 因此,在这个例子中,将有两次写入数据库,但如果我可以在短时间内批量处理消息并按id分组,那么我只需要对数据库进行一次写入。 如何在RabbitMQ中处理这个问题? Spring AMQP是否提供了更简单的抽象? 请注意,我已经简要介绍了预取,但我不确定这是否可行。 如果我理解正确的话,预取也是基于连接的。 我试图在每个队列的基础上实现这一点,因为如果批处理(因此增加了延迟)是要走的路,我不想将这种延迟添加到我的服务所消耗的所有队列中(但仅限于那些需要“group-by-id”function)。

Spring集成多个UDP入站/出站通道

我正在尝试使用Spring引导构建一个部署在多个节点上的模块。 由于特定应用程序的时间限制,我必须使用UDP并且不能依赖Spring提供的易于使用的REST工具。 我必须能够将数据报发送到可能随时间变化的一组节点 (即,集合可能增大或缩小,或者某些节点可能移动到新的ip / port“坐标”)。 沟通必须是单播的 。 我一直在阅读有关TCP和UDP支持TCP和UDP支持的官方文档,但它相当……紧凑,不透明。 org.springframework.integration类上的javadoc也非常简短。 根据我的理解,“入站”通道用于发送数据包,而出站通道用于接收数据包。 到目前为止,我还没能找到入站的以下问题的答案(即“发送”频道,如果我理解的话): – 如何在运行时创建更多频道,将数据包发送到多个目的地? – 如果主机被移动,我应该销毁通道并设置一个新通道,还是可以在运行时更改通道的参数(目标IP /端口)? 对于出站通道(如果我理解的话,“接收”通道),我有与上述相似的问题,如: – 如何在运行时设置多个通道? – 如何在运行时更改现有通道的目标,而不是必须将其拆除并重新设置? – 我应该只打开/关闭“原始”UDP套接字吗?

通过注释进行Spring Integration Control总线配置

只是一个简单的问题:有没有办法通过注释配置Spring Integration Control Bus(没有任何xml) ?

Spring集成 – 入站和出站通道适配器

入站和出站通道适配器之间的根本区别是什么? 任何例子都会非常有用。 我已经回顾了Spring文档,这种“定向”区别对我来说并不清楚。 我支持配置了出站通道适配器的应用程序,但我发现行为计数器直观的出站标签。 此适配器获取外部文件,然后将其带入我们解析文件并保留数据的应用程序。 这与此问题类似,但我希望更多地关注通道适配器,并希望获得更多反馈! 谢谢!

如何设置TLS Server以在Spring集成中validation客户端?

请参阅使用SSL / TLS运行客户端 。 这解释了服务器执行客户端身份validation的方案。 我正在使用Spring Integration来处理TLS连接。 我的spring-context文件是: 我的服务器正在接受SSL连接并使用我的服务器和客户端上安装的证书进行处理。 我不确定是否为客户端身份validation设置了上述spring配置。 是在SSL transaport级别还是在应用程序代码中完成的客户端身份validation?

Spring Integration Http Outbound Gateway Header Mapper

我正在尝试将自定义标头添加到我的http出站网关。 我尝试和工作的事情: 在上面的场景中,它可以工作,但我添加的自定义标头默认以X-为前缀。 为了摆脱它,我尝试了以下但它没有将自定义值设置为标题: 花了很多时间试图解决这个问题后,我陷入了困境。 任何帮助,将不胜感激。

如何在真实的JMS分布式架构中利用Spring Integration?

对于以下场景,我正在寻找有关最佳实践的建议和提示: 在分布式(主要是基于Java)系统中: 许多(不同的)客户端应用程序(web-app,命令行工具,REST API) 中央JMS消息代理(目前支持使用ActiveMQ) 多个独立处理节点(在多个远程计算机上运行,​​计算由JMS消息有效负载指定的不同类型的昂贵操作) 如何最好地应用Spring Integration框架提供的JMS支持来将客户端与工作节点分离? 在阅读参考文档和一些初步实验时,看起来JMS入站适配器的配置本身就需要使用订户,而订户在解耦方案中不存在。 小方说明:通过JMS文本消息进行通信(使用JSON数据结构以实现未来的可扩展性)。

spring amqp-outbound网关从不同的thead生成回复(如jms-outbound网关)

问题陈述: Spring amqp-outbound网关从不同的线程产生回复(类似于jms-outbound网关,具有不同的队列,使用相关键关联请求/响应)。 无法将此消息与此示例相关联。 Spring集成 配置 @Bean public RabbitTemplate template(ConnectionFactory rabbitConnectionFactory){ final RabbitTemplate template = new RabbitTemplate(rabbitConnectionFactory); template.setQueue(“reply_queue”); return template; } @Bean public Binding binding(){ return BindingBuilder.bind(this.queue()).to(this.exchange()).with(“request_exchange_queue”); } @Bean public DirectExchange exchange(){ return new DirectExchange(“request_exchange”); } @Bean public Queue queue(){ return new Queue(“request_queue”, true, false, true); } @Bean public Binding bindingReply(){ return BindingBuilder.bind(this.queue()).to(this.exchange()).with(“reply_exchange_queue”); } @Bean […]

使用Java DSL从文件轮询 – 添加Files.inboundAdapter时编译错误

我正在使用Spring Integration Java DSL v.1.2.2并按照一些示例尝试编写代码来轮询文件夹 return IntegrationFlows .from(Files.inboundAdapter(new File(“/tmp/foo”))) .handle((p, h) -> fileProcessor.process(p)) .get(); 此代码无法编译,因为 “Cannot resolve method ‘from(org.springframework.integration.dsl. file.FileInboundChannelAdapterSpec)'” 如何解决这个问题以及如何添加固定间隔轮询?