Spring integration 使用出站网关删除文件失败
我正在尝试使用sftp出站网关删除远程sftp上的特定日志文件 <int-sftp:outbound-gateway id="removeSourceGateway" session-factory="sftpCachingSessionFactory" reply-channel="outputChannel"
我正在尝试使用sftp出站网关删除远程sftp上的特定日志文件 <int-sftp:outbound-gateway id="removeSourceGateway" session-factory="sftpCachingSessionFactory" reply-channel="outputChannel"
我想写一个批处理,每天从一个路径读取网站访问日志文件(csv文件),并使用SpringIntegration进行一些分析 这是输入csv文件的简化版本 srcIp1,t1,path1 srcIp2,t2,path2 srcIp1,t3,path2 srcIp1,t4,path1 srcIp1,t1,path1 srcIp2,t2,路径2 srcIp1,t3,路径2 srcIp1,t4,路径1 每个源ip和路径的访问数将在一些过滤逻辑之后计算 我创建了一个输入通道,其有效负载是解析的日志行,并应用
我们是否可以使用文件出站适配器将整个SOAP信封写入文件,而不仅仅是有效负载?(我能够将有效负载写入文件)。假设您在那里使用。或者这对目标解决方案没有关系 您应该实现一些EndpointInterceptor将其添加到UriEndpointMapping中。通过handleRequest实现,您可以访问整个MessageContext,在这里您可以执行以下操作: ((SoapMessage) messageContext.getRequest()).getEnvelope() 并将此对象发送到
我们正在使用SpringIntegration+JMS+ActiveMQ在使用的微服务之间交换消息 以下是我们对入站邮件的配置: @Autowired lateinit var connectionFactory: ConnectionFactory @Autowired lateinit var messageConverter: MessageConverter @Bean("file-uploaded.inbound") fun inboundChannel() = MessageCh
排除后 <exclusion> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-stream</artifactId> </exclusion> org.springframework.cloud 春云流 我得到一个错误: java.lang.IllegalArgumentException:没有为基于注
在Spring集成中,我使用控制总线启动和停止一个mail:inbound通道适配器。 有没有办法检查频道状态?是否正在运行 非常感谢使用消息网关向控制总线发送消息 public interface Gateway { boolean controlBusBooleanMethod(String command); } ... <int:gateway service-interface="foo.Gateway" default-request-channel="toCont
如果有人能分享一下使用SpringIntegration实现近乎实时的oracle数据库同步应用程序的可能性,我将不胜感激。这是一个轻量级的需求,当源数据库中的某些数据字段发生更改时,只需复制两个表中的某些数据字段。任何关于可以使用什么架构的想法都会大有帮助。另外,如果任何可以与SI一起使用的Oracle实用程序?我会说Oracle触发器是为您准备的。当主数据发生更改时,应使用触发器将这些更改移动到同一数据库的另一个表中 您应该使用SI从同步表中读取和删除数据。在同一事务中,您必须使用它将数据移
我有一个简单的Spring Integration 4 Java DSL流,它使用DirectChannel的LoadBalancingStrategy来循环消息请求到许多可能的REST服务(即从两个可能的服务端点URI之一调用REST服务) 我的流程当前的配置方式: @Bean(name = "test.load.balancing.ch") public DirectChannel testLoadBalancingCh() { LoadBalancingStrategy load
我正在将每个传入的消息转换为一个文件并上传到SFTP服务器。 当文件上传期间SFTP不可用时,我会得到大量异常堆栈跟踪日志。每次传入消息时都会发生这种情况。只是想知道有没有更干净的解决方案,在那里我可以捕获这些异常并使用我配置的记录器记录自定义消息 <bean id="sftpSessionFactory" class="org.springframework.integration.sftp.session.DefaultSftpSessionFactory">
我正在使用JMS出站网关向请求队列发送消息,并从单独的响应队列接收消息。我想添加一些功能,以便在消息成功发送到请求队列后调用特定bean的方法 我正在为此使用spring integration 4.0.4API和spring integration java dsl 1.0.0API,到目前为止,我已经能够实现上述功能,如下所示: @Configuration @EnableIntegration public class IntegrationConfig { ... @
我正在使用spring集成kafka 1.1.0和以下配置。我不太了解流配置。当我增加这个值时,Spring会自动生成更多线程来处理消息吗?e、 g.当我有streams=2时,相关的转换器和服务激活器是否都在2个线程中运行?我想错过一些线程执行器配置,但不确定如何配置。任何暗示都将不胜感激。谢谢 streams属性与Spring本身无关;调用ConsumerConnectionr.createMessageStreams()(每个主题/流条目都在map参数中传递)时,它只传递给Kafka 请
我正在使用spring与hornetQ的集成。问题是我在消息(方法)中放置了一个自定义头,但是当它到达订阅者时,头不再可用。我需要设置一些配置属性来保留标题吗 应用程序接收消息(我可以在控制台日志中看到方法头,因此我知道它实际上得到了正确的消息)。它基本上只是将消息路由到出站队列,以便客户端可以订阅它(如果有更干净的方法,请让我知道) 您的问题不在DefaultJmsHeaderMapper.fromHeaders中吗: if (value != null && SUPPORTE
在我的SI流中,我想修改有效负载的一个属性。在流的开始,我填充了一个JavaBean(我们称之为MyFlowBean),并通过流的不同组件发送它。 在某一点上,我想改变这个bean的属性'extractedValue',并且我想以正确的方式来做。我的意思是,我确信有一个组件(变压器??)我可以说 <transform propert='payload.extractedValue' value='[spEl expression]' /> 好的,我知道SI中没有这样的标签,它只
我试图做与这里所做的完全相反的事情: 我从示例应用程序中获取了一组协作客户端tcp适配器。通常,应用程序将通过共享连接向第三方发送大量客户端请求,但有时根本没有任何请求通过 因此,第三方要求我每2分钟向他们发送一条ping消息。如果在预定义的时间段内没有收到对ping的响应,该时间段可能比其他调用的超时时间短,我应该终止连接并重新连接 我的第一个想法是创建一个计划任务,每2分钟发送一次ping,但我不确定如何终止连接并从任务内部重新建立连接。我正在考虑的另一个选择是使用连接拦截器并对请求和响应计
如果将自定义错误处理程序添加到int http:outbound网关,则响应主体不会根据预期的响应类型进行解组,而是只返回一个ResponseEntity。我的自定义错误处理程序非常简单: public class MyResponseErrorHandler extends DefaultResponseErrorHandler { private static final Logger log = LoggerFactory.getLogger(AlmaGetUserResponseErr
这应该是一个简单的问题,但我无法在网上找到合适的文档。我想这样做: @MessagingGateway(name = "redemptionGateway", defaultRequestChannel = Channels.GATEWAY_OUTPUT, defaultHeaders = @GatewayHeader(name = "orderId", expression = "#redemption.orderId")) public interface RedemptionGateway
我是SpringIntegration的新手,我正在尝试将以下代码转换为SpringIntegration代码,但我无法正确发送请求。 我真的不知道我做错了什么,也不知道该怎么做,实际上任务是将发送到Web服务的XML拆分,然后从中获取响应,然后聚合为一个XML。 正常代码: connection = (HttpURLConnection) validateServer.openConnection(); connection.setRequestMethod("
我的配置如下,我没有收到订户异常,如何解决 <bean id="Beani" class="org.util.Beani" init-method="init" /> <int:gateway id="configHelper" service-interface="org.ncb.quickpay.grs.util.PartnerConfigReader" default-request-timeout="5000" default-reply-timeou
我在使用DSL获取Spring集成流时遇到了一些问题,DSL的拆分器在Spring云数据流上下文中可以正确地满足我的需要。从本质上讲,我的微服务是一个试图执行以下操作的处理器: 一些第三方报告将被检索并合并在一起。这 生成事件的集合。(注意:我的微服务不是 源代码,因为它需要由可配置的时间表驱动,所以 有一个定时触发器将命令消息传送到此 微服务。) 事件集合被拆分,以便可以验证每个事件。事件 通过验证是很好的,可以继续进行。失败的事件 在数据流上下文中,验证必须是死信。就这样 这里没有失败或失败
我想使用advice在出站适配器(比如ftp出站适配器)中执行一些重试逻辑,但是当我学习Spring集成参考手册时,我发现advice只能用于应答生成端点,这是真的吗 如果我的理解是正确的,那么在出站适配器失败后如何重试 谢谢 我发现建议只能用于回复,是真的吗 是什么文件让你得出这个结论?如果文档中有误导性的东西,我们想修复它 有关将ExpressionEvaluationRequestHandlerAdvice应用于ftp出站通道适配器的示例,请参阅
目前,我们在应用程序中使用SpringIntegration2.1.0版本。 申请流程如下: 在应用程序中执行了一些操作,我们通过活动MQ以字符串的形式获得了输出字符串 我使用了消息驱动的通道适配器和服务激活器从队列中读取数据 使用tcp出站网关在服务器(应用程序作为客户端工作)上成功显示该数据 问题在于从服务器获取确认信息时 创建了一个新通道,并在tcp出站网关的应答通道中输入 在service activator中传递与输入通道相同的通道 它显示以下错误: [task-scheduler-5
快速提问。目前,spring integration kafka似乎不是spring integration BOM的一部分,因此在gradle中指定依赖项时,必须声明版本(使用spring dependencies插件时)是一个奇怪的问题 有我应该导入的BOM表吗?如果不是,也没什么大不了的 plugins { id 'org.springframework.boot' version '2.0.1.RELEASE' id 'io.spring.dependency-manag
我对可传递依赖项javax.mail包有一个问题 是否有资源可以查看使用SpringIntegrationMail设置maven项目的正确示例 我的pom看起来像: <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-integration&l
我已经跟踪了链接 但我还没有完全理解 我看了看3。实现的ResponseErrorHandler,但不确定在//handle SERVER\u错误等处执行什么操作 我的流程: Rest端点调用网关方法,然后调用下面的方法 <int:gateway id="tService" service-interface="h.lr.eai.TGateway" default-reply-channel="dest-channel" de
拆分后,如何在将所有消息放到Kafka上后执行方法 我曾尝试在频道后使用handle(),但最终没有从第二条消息发布到卡夫卡 IntegrationFlowBuilder flowBuilder = IntegrationFlows .from(() -> jdbcTemplate....); flowBuilder.split(); flowBuilder.channel(messageChannel); 我想在将所有拆分消息写入Kafka后执行一个方法。由于您拆
根据下面的两个链接,我创建了一个IntegrationFlow,在出现错误时调用自定义errorFlow。然而,我看到的行为是,应用程序从不回复客户端,它只是挂起。如何回复来自errorFlow的请求?作为参考,我主持了我的样本 请求… GET http://localhost:8080/foo 事实证明,这种逻辑仍然存在问题 我们需要进一步调查,找出解决办法 同时,您可以通过表达式evaluation requesthandleradvice为发生故障的变压器提供解决方案,并以类似的
我们正在构建一个只与JMS(ActiveMQ)连接的分布式Java系统(应该是可伸缩的;-)。我研究了Spring集成,我不确定如果我们使用它会有什么好处。我认为我们最好使用Spring核心项目中的JMS模板,因为我们只将消息从一个JavaService发送到另一个JavaService等等 如果您认为Spring集成(或任何其他框架)为您带来的额外抽象值得花费,请使用Spring集成。它应该给你一个更坚实的基础来构建你的应用程序。Spring编写的软件比您或我从头开始编写的任何软件都要好 所有
我正在研究Activiti BPMN流程,以及它们如何最好地与Spring Integration EIP消息流交互。具体地说,我想知道触发activiti BPMN进程以在Spring集成消息流末尾执行的最干净或最好的方法是什么 e、 g.我是否应该从EIP流中的最终服务激活器方法触发BPMN流程的消息启动事件 runtimeService.startProcessInstanceByMessage(messageName, processVariables); e、 g.我是否应该从EIP
使用Spring Integration我们如何使用spEL显示标题和有效负载: <int:message-history/> <int:logging-channel-adapter id="logger" expression="'Id:' + payload.id + '; Date:' + payload.createdAt + '; FromUser: ' + payload.fromUser + '; Content: ' + payload.t
我的要求是,我想在固定的时间间隔(比如9小时)后停止投票。目前,我正在尝试在1分钟后停止轮询。以下是我的代码: <int-task:scheduler id="scheduler" pool-size="10"/> <int-task:scheduled-tasks scheduler="scheduler"> <int-task:scheduled ref="incomingFiles.adapter" method="stop" fixe
我目前正在使用Spring工具套件(版本:3.6.3.CI-B2266066,构建Id:201411050946,平台:Eclipse Luna SR1(4.4.1))和Spring集成4.0.3 我已将spring integration kafka branch 1.1.0导入到我的项目中,并在spring配置XML文件中使用int-kafka:inbound通道适配器和int-kafka:outbound通道适配器。然而,当我进入integration graph选项卡视图时,我看不到其中
我想使用spring集成并发处理CSV文件。每一行都将转换为单独的消息。所以假设CSV文件中有10K行,我想启动10个线程,每一行都将传递给这个线程。如果有人能给我举个例子就好了 感谢从开始支持迭代器作为有效负载进行拆分。因此,如果的输出通道是执行通道,则可以将入站文件转换为行迭代器,并并行处理每行的消息: <splitter input-channel="splitChannel" output-channel="executorChannel" expression
我试图创建一个流定义,它使用两个连接在一起的有效负载字段来创建一个连接字符串 stream create --name blah --definition "http | gemfire-json-server --keyExpression=payload.getField('deviceId') + payload.getField('timestamp')" --deploy` keyExpression中的连接部分不正确,如何使其内联工作?最简单的答案是基于字符串具有concat()方
我已经在spring DSL中创建了一个Sftp出站流,我还在Sftp出站流之上创建了一个文件入站流,用于从本地目录查找文件,并将其发送到消息通道,该通道负责将文件复制到远程目录,但当我运行代码时,没有文件被复制到远程目录目录所以我被困在这一点上,请任何人提供任何指向它的指针,因为我无法继续 这是我的会话工厂 @Autowired private DefaultSftpSessionFactory sftpSessionFactory; @Bean public
我们正在使用入站通道适配器轮询文件,一旦我们有了文件,我们就进行db调用。如果数据库连接出现问题,该线程将挂起,并且不再轮询该文件 <int-file:inbound-channel-adapter id="testChannel" directory="/nas/test" channel="ftpChannel" auto-create-directory="true" prevent-duplicates="false" filter="tes
我有下面的spring集成配置,从从读取驱动器中的文件开始,将其转换为java对象,并向REST APT发送http GET请求。前两个步骤在我的链中运行良好,但当涉及到int http:outbound gateway步骤时,URL不会被触发,也不会显示任何错误消息。应用程序保持运行状态,不显示任何错误消息。它从不转到kbbCvsReadResponseTransformer类,在该类中我可以检查从该REST服务收到的响应。原因可能是什么。我使用的是spring-integration-4.1
此链中有两条路径-成功路径移动到通道\默认值,错误路径移动到空通道 此网关是否会导致内存泄漏。我怎么检查?是否有任何方法可以确保为处理网关请求而启动的线程在一段时间后释放。如果通道chainC的下游流可能不会返回回复,则需要设置回复超时来释放线程,否则线程将挂起等待永远不会出现的回复 只要该子流中没有异步切换,就可以安全地设置reply timeout=“0”,因为在这种情况下,计时器在子流完成之前不会启动 如果chainC总是返回一个结果或异常,则该配置不存在内存泄漏的可能性。顺便说一句,这里
我目前正在开发我的第一个SpringXD流。它应该接收有关MQTT主题的消息,在服务上执行HTTP POST,并在另一个MQTT主题上发布此结果 目前,我一直致力于发布到与初始主题不同的MQTT主题 这是我的流: stream create test --definition "in:mqtt --url='tcp://hivemq:1883' --topics='+/+/+/my/downlink' --username='test' --password='test' --clientId=
我使用出站通道适配器发送JMS消息,如下所示: <intjms:outbound-channel-adapter destination-name="MY.QUEUE" connection-factory="myConnectionFactory" channel="mySender"/> 在此之后,我需要知道JMS消息Id。如何获取它 我可以在适配器中提供一种在自定义JmsTemplate中执行此操作的方法,但可能有一种更简单的解决方案来
当我尝试使用IntegrationFlowBuilder上的延迟选项时,出现以下错误 不支持的实体org.springframework.integration.mongodb.store.MongoDbMessageStore$MessageWrapper!无法确定IsNewsStrategy 我已经查看了的历史,它似乎是相关的,但这个问题似乎已经在我使用的版本中得到了解决(我看到了_id字段) 当我逐步浏览代码时,似乎使用了通过我的MongoConfig映射的映射上下文(和IsNewStra
我正在使用Spring集成来使用RSS提要。一旦我得到一个提要项,我需要通过使用有效负载中的一个字段来增强数据,调用一个Java类来获取一些额外的数据,并在将所有数据写入DB之前将其与有效负载一起存储 实现这一点的最佳方法是什么,有效负载充实器还是服务激活器,以及如何使用DSL来指定这一点 最后,由于有效负载是SyndEntry对象,我是否需要使用新字段创建新的有效负载 任何指针都会有帮助。是的,您需要一种新的有效负载类型;您可以使用一个简单的POJO @Bean public Enricher
目前,我正在尝试使用json格式将消息放入队列。下面是我的代码片段,但它不起作用 return IntegrationFlows.from(Amqp.inboundAdapter(connectionFactory, NOTE_INCOMING_QUEUE) .concurrentConsumers(2)) .transform(new JsonToObjectTransformer(Note.class))
我已经设置了一个ExpressionEvaluationRequestHandlerAdvice,它在成功(到日志)或失败(回到messagestore)时“转发”负载。 当我的服务正常运行一段时间并正确轮询配置的jdbc通道消息存储时,在处理1000条消息后会引发以下异常 2018-04-18 09:17:20,427 | ERROR | taskExecutor-1 | session=- user=- | o.s.i.h.LoggingHandler | org.
我看到了许多与spring集成文件相关的示例。但我正在寻找一个示例应用程序,其中它使用SpringIntegrationJPA使用入站通道适配器从数据库中提取数据,并从中创建Java对象 非常感谢您的帮助 在官方的Spring集成示例库中有一个基本的JPA示例: 入站通道适配器的简单Java DSL示例可能如下所示: @Bean public IntegrationFlow pollingAdapterFlow(EntityManagerFactory entityManager
希望实现http请求限制,想知道轮询器是选项还是应该使用拦截器?其思想是有一个规则“在Y个时间量内X个请求/操作数”,它应该在整个集群中工作。这取决于您想对限制调用方做什么;抛出异常(超时后)或永远等待。在网关之后使用队列通道(网关上有一个限制和发送超时)将起作用,如果超过时间,将抛出异常;将超时设置为-1(默认值)将永远阻塞 您可以通过网关上的错误通道捕获异常,并返回友好的“太忙”回复(如果超时) 拦截器可能被精心设计成更复杂的——速率限制而不是简单的队列限制
我知道我们可以通过发送如下控制总线消息来启动/停止通道适配器:@adapterid.start()。 但是我们能用一条消息为所有适配器实现这一点吗? 比如:@allAdapters.start()? 在我的系统中,我有大约20个入站适配器,逐个处理它们不是一个灵活的解决方案 谢谢 ference我记得我使用内嵌Groovy脚本时: <service-activator> <groovy:script> ['foo1', 'foo2'].each
我的集成环境如下: <int:channel id="fileInboundChannelAdapter"/> <int-file:inbound-channel-adapter directory="${directory}" channel="fileInboundChannelAdapter" auto-startup="false" > <int:poller fixed-rate="5000" max-messages-per-poll="1" /
尝试了下面给出的两种方法,但不起作用。我已经给出了我在以下方法中面临的问题。 Xml配置:第一个配置出错: 错误:通过工厂方法实例化Bean失败;嵌套异常为org.springframework.beans.beans实例化异常:未能实例化[org.springframework.integration.mail.Pop3MailReceiver]:工厂方法“Pop3MailReceiver”引发异常;嵌套异常是java.lang.NoClassDefFoundError:javax/mail/
当我使用来自动觉流的消息时。我买了一些带标题的垃圾车 @StreamListener(Processor.INPUT) public void receive(String message) { System.out.println("Message recieved: "+message); throw new RuntimeException("Exception thrown"); } @StreamListe
假设一个应用程序中有一些spring集成流的实例(JVM)很少。流中的一个队列通道使用MongoDbMessageStore持久化消息。 是否可以在运行的实例之间共享此消息存储?例如,如果在一个实例上添加了一条消息,它会自动显示在另一个实例上吗?是的,MessageStore的实例可以共享,因为任何对象都可以共享。如果将应用程序的多个实例表示为多个JVM实例,那么当然不能共享同一个MessageStore实例,但是。如果每个应用程序实例(JVM)中的MessageStore实例指向同一个存储,那