Spring integration spring集成中聚合器的信号释放策略
我有一个场景,我想使用聚合器对消息进行分组,并在消息到达另一个流时释放它们。是否可以向聚合器发送释放组的信号 提前谢谢! Guzmán目前,这样做的唯一方法是向聚合器发送一条“虚拟”完成消息,根据其存在情况制定发布策略,并将其从发布的集合(有效负载)中删除。自己试试,展示代码。如果你不能,你的问题就离题了。
我有一个场景,我想使用聚合器对消息进行分组,并在消息到达另一个流时释放它们。是否可以向聚合器发送释放组的信号 提前谢谢! Guzmán目前,这样做的唯一方法是向聚合器发送一条“虚拟”完成消息,根据其存在情况制定发布策略,并将其从发布的集合(有效负载)中删除。自己试试,展示代码。如果你不能,你的问题就离题了。
Spring Boot Actuator为我们提供了一个integrationgraph端点,它公开了一个包含所有Spring集成组件的图形 图形可以作为json使用: curlhttp://localhost:8080/actuator/integrationgraph \ --请求获取\ --标题“接受:应用程序/json” 但是有没有任何已知的工具可以从这个json中创建图像/点图/plantUML,例如?我不知道有任何工具,但肯定有一个 对于JavaScript/HTML,有一个要点:
我没有向目标队列发送消息,因此我最终得到MessageTimeoutException 我尝试了一个非常有效的方法,并发送了消息,确保我在请求通道上获得了正确的消息 我还在日志中看到我的出站gatway正在requestCh1上接收消息。 org.springframework.integration.jms.JmsOutboundGateway0收到消息:[有效负载…] 我真的被卡住了,无法理解为什么jms出站网关不向目标队列发送消息 有人帮忙吗 配置: <int:publish-sub
我们可以在Spring集成中使用“子流”吗 我有许多不同的流程,它们将使用相同的“子流”。这些过程总是有相同的部分,最好放在一个单独的文件中 实施这些流程的正确方式是什么 我试图找到在Spring Integration中使用子流的解决方案,但什么也找不到。一种简单的方法是将子流放在一个单独的文件中,其中包含“已知”的输入和输出通道(子流从一个通道开始,以另一个通道结束)。然后,只需子流并向/从输入/输出通道发送/消费 或者,您可以使用定义子流并将其添加到需要子流的应用程序上下文中,而不是导入
当我们希望在一个系统中同时使用多个spring集成工作流时,我们应该注意的重要事项是什么 据我所知: -通道id-s应该是唯一的(因此两个通道不能具有相同的通道id) 聚合应连接到具有不同区域的邮件存储 我说得对吗?有什么要点吗 谢谢你说得对。要记住的其他几点是: errorChannel是整个ApplicationContext 您应该考虑不同的TaskExecutor和TaskScheduler不会影响不同的流 你可以看看分机 您可以使用 对于任何复杂的应用程序,所有其他的事情都应该是正
当我浏览SpringIntegration的出站通道适配器的文档时,我发现amqp模板是一个可选字段。我还注意到,exchange名称和路由密钥同时出现在Rabbit模板和出站通道适配器上 如果我没有提供amqp模板,适配器将在连接工厂中使用什么 及 如果我在兔子模板中指定了一组属性,在出站通道适配器中指定了另一组属性,然后将兔子模板提供给出站通道适配器,那么将使用哪些属性?并不是说我会这么做,我只是好奇哪个组件的属性比另一个组件的属性更有用 如果我没有提供amqp模板,适配器将在连接工厂中使用
我们正在使用http出站适配器发出http get请求,并且我们希望在URL从envt变为envt时从属性文件中读取URL。我们还使用消息负载将一些其他路径附加到此url,但随后它会向我们提供以下错误消息:“由:java.lang.IllegalArgumentException引起:Map没有url值”。我们所需要的就是从属性文件中读取基本url,并使用有效负载生成最终url 下面是我们的示例配置 <int-http:outbound-gateway request-channe
我们正在使用jms出站通道适配器向一个通道发送消息。为此,我们使用jndi模板访问连接工厂和队列。两个配置都在其配置中使用cache=true 但我们注意到,对于它发送的每一条消息,都会创建一个新的连接,而不是使用来自缓存的连接 我相信在幕后,这个出站通道适配器使用JmsSendingMessageHandler,它在内部使用jms模板发送消息 有人能告诉我们如何缓存WebLogicJMS连接吗 使用jndi模板访问连接工厂和队列 在此上下文中,缓存意味着缓存连接工厂对象,而不是其连接 只要不使
我们将把Spring集成代码部署到运行在多个tomcat服务器上的web应用程序中。我们有一个JMS出站网关,如下所示。问题是,一个servlet容器JVM(比如tomcat1)发送的消息是否可能被另一个servlet容器JVM(比如tomcat2)接收?在我们的例子中,在spring集成流中,我们将消息拆分为多条消息,并将其发送到JMS出站网关,一旦收到响应,我们将使用将消息聚合回同一JVM上 因此,如果其他JVM接收到响应,这将成为一个问题。有人知道这件事吗 <int-jms:outb
我使用SpringIntegration解析XML文件,需要为每个标记创建一个线程(每个线程的速率不同) 现在(在这里许多用户的帮助下:)我能够按标记分割XML,然后将其路由到相应的服务激活器 这非常有效,但我无法重定向到创建“线程”然后执行操作的通道。现在我有以下配置,在我的脑海中(我不知道它是否正确…) 这是我的实际配置,用于拆分标记并重定向到通道。 路由器不应该直接重定向到通道,而应该调度它们 在第一个实例中,我将足够用固定速率在池中重定向它,稍后我将使用XPATH获取属性,然后用正确的值
我们希望将Spring集成配置拆分为几个文件,例如flowOne.xml和flowtwo.xml。在每个这样的文件中,我们希望有一个输入通道 Spring Integration能否自动将XML文件名作为频道id的前缀,即flow one.input和flow two.input 否则您将如何处理XML配置(无需求助于一个大的XML文件)?请参阅扩展项目,它封装了子流并使它们“可调用” 否则,您必须管理频道命名以防止重叠。我看到了Spring集成流项目,但我不想要子流。所以我想我必须手动使我的I
我只有一个句柄()和get(),没有输出通道。在将消息发送到此句柄时,获取我在流中发送回的对象。但在单元测试中,我得到的是布尔值。如何在单元测试中获得预期的对象 下面是代码单元测试 在单元测试中-布尔值在发送消息时出现,而不是预期的对象 对象o=this.acknowledgeAlarmInputChannel.send(消息); System.out.println(“输出:+o);//打印布尔值true 代码: 单元测试: @Test public void testEvent() {
我正在开发一个消费者,它消费来自多个动觉流的事件。我有一些问题需要了解最佳实践 我应该为每个流创建一个通道吗?应考虑哪些因素来决定“每个流的通道”或“所有流的一个通道” 哪种渠道更适合我的案例性能?有不同的通道类型,如PollableChannel、SubscribleChannel和DirectChannel 谢谢动画片消息驱动ChannelAdapter是一个活动组件,它在任务执行器中执行消费和消息发送。因此,您可能认为不要将消息转移到队列通道或执行器通道——该逻辑已经是异步的,并且在机器上
如果主服务器和故障转移服务器之间的连接被中断,并且也未启动,则我会遇到问题。一段时间后,故障转移服务器启动,并成功建立与服务器故障转移的连接。但它仍然试图连接主服务器,这是期望的行为吗 连接工厂的代码段: List processServers=mConfigurationService.getProcessServers(); 列表工厂=新的ArrayList() 这里是日志,我们可以看到连接是用10.90.x.F建立的,但它仍在尝试连接10.90.x.p 2020-02-27 16:33:5
在使用时是否可以传递自定义JMSCOrrationId 之所以要这样做,是因为消息的使用者系统将有效负载属性设置为JMSCorrelationId 我检查了JMSOutboundGateway.java以获取相同的消息,但似乎ie使用JMSmessageId或生成的唯一id作为JMSCorrelationId来映射传入的消息 有什么帮助吗 更新 我能够在输入通道上使用header enricher Receiving input进行设置,并且jms出站网关会接收到这个丰富的header输出。但是
我使用了下面的建议,能够从远程服务器下载文件。如果我想在下载完成后处理文件,那么如何继续?一旦文件下载到我的本地系统,有人能告诉我如何/在哪里获得控制吗 ApplicationContext.xml 石英作业 实际上,我想解析下载的文件并将它们插入数据库表中 嗯。由于FTP适配器轮询远程目录,将这些文件存储到本地目录,并将其作为Message.payload File对象逐个发送,因此在下游流中不需要停止为每个文件执行某些自定义过程 例如,您可以根据需要使用并提供一些进一步的自定义解析器 最后,
我使用spring集成组件连接我的流程 <bean id="myListener" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="destination" ref="requestQueue"/> <property name="concurrentConsumers" value="5"/> <p
我使用spring集成制作了一些聚合器。 如果具有相同组密钥的请求数为7,则必须释放聚合器以转到下一个通道。 但是,即使计数变为7,聚合器也不会释放。 最奇怪的是。。有时候,它奏效了 jdbc缓存存储表“int_message_group” ->完成是1发布0 GROUP_KEY REGION MARKED COMPLETE LAST_RELEASED_SEQUENCE CREATED_DATE UPDATED_DATE 57eba5ba-dfd
我有以下例外: INFO 2015-01-19 11:00:00 [AbstractCorrelatingMessageHandler] - Expiring MessageGroup with correlationKey[aa7eb738-b47e-3bbe-8aca-282453ae5b29] ERROR 2015-01-19 11:00:00 [JdbcMessageStore] - Exception in expiry callback org.springframework
是否有人将New Relic与Spring集成的独立实例集成?我还让Spring集成启动Spring批处理作业。我让NewRelic代理报告JVM统计数据。我想处理任务调度器线程运行的任务和不同的NewRelic事务。使用搜索引擎时,“SpringIntegrationNewRelic”这个短语非常通用 我在Spring批处理中找到了这个:但是我找不到任何Spring集成的东西。如果New Relic代理尚未检测到这些任务,您应该能够使用@trace annotation来监视它们 org.s
是否可以使用多方法接口作为只有一个通道的网关 我使用SpringIntegration4.1.2.0版本 不同的方法在其他服务器上调用不同的API方法 我的配置/源代码如下所示: 网关: @MessagingGateway 公共接口测试服务 { @网关(requestChannel=“testRequestChannel”) 公共测试findTestById(字符串测试); @网关(requestChannel=“testRequestChannel”) 公共列表getTests(); ……还有
我试图编写并配置一个Spring入站Webservice网关,它应该接收完整的SOAP消息,然后将其委托给另一个SOAP提供者(出于安全原因,这是必要的)。 应该像 (1) 应用程序->(2)SOAP提供者和客户端(这是我的部分/配置)->(3)第二个SOAP提供者->(4)服务 到目前为止,我在第(2)问题上所做的工作: 1) web.xml MessageDispatcherServlet与映射: 春季天气预报 /应用服务/* 2) 具有端点映射的配置 <bean class="or
在我发送请求消息并获取有效负载数据(json)后,我想从gitlab应用程序中获取json数据,我使用postman chrome插件附加了内容 我得到的错误如下 Caused by: java.lang.IllegalArgumentException: Could not resolve 'json__TypeId__' in 'javaTypes'. at org.springframework.integration.support.json.AbstractJacksonJso
我有一个sftp:inbound channel adapter,它将文件从远程文件夹同步到本地文件夹。当它发现一个扩展名为.xml的文件时,它会创建一条消息和一个新事务,并将其发送到routerChannel通道 approverRouter查看xml内部并确定流程是否可以继续。如果一切正常,则消息将被发送到“okChannel”并向下发送到数据库进行保存。但是,如果情况不正常,则会将消息发送到int:delayer10秒钟,然后重新提交到approverRouter 如果事务成功或失败,则s
我有密码 @Payload(“partnerId”) 此时,没有要对SpEL表达式求值的对象 它要么需要是文字 @Payload("'partnerId'") 或者参考其他一些bean 此外,在适配器上,您希望负载是一个带有键partnerId的映射 expression="payload['partnerId']" 所以这行不通 如果你想传递一个变量,你应该这样做 公共接口伙伴服务{ List<QueueConfiguration> findConfig(MyClass p
我正在尝试使用AmqpOutboundEndpoint实例,通过spring集成编写我的第一个AMQP发布程序 我不明白RabbitTemplate和AmqOutboundEndpoint之间的区别是什么,因为AmqOutboundEndpoint正在使用RabbitTemplate的实例 我想使用AMQP网关来分离我的应用程序的两个不同组件(业务组件和集成组件) 当我需要根据发布的消息类型切换路由密钥时,使用AqmpOutboundEndPoint发布消息是否有效?我在internet上找到的
我一直在为使用AMQP在两个微服务之间建立异步消息传递“铺平道路”。我们希望为每个服务推广使用单独的域对象,这意味着每个服务必须定义它们自己的通过队列传递的任何对象的副本 我们在生产者和消费者端都使用了Jackson2JsonMessageConverter,并且我们使用javadsl将流连接到队列或从队列连接到队列 我确信有一种方法可以做到这一点,但我还是没有意识到:我希望消费者端忽略从生产者传递的\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
我有一个基于DSL的流,它使用split迭代对象列表并发送卡夫卡消息: .transform(...) .split() .channel(KAFKA_OUT_CHANNEL) 发送完所有消息后,我需要调用服务,还需要记录处理了多少消息。 我知道一种方法是使用publishSubscribeChannel,其中第一个subscribe执行实际的卡夫卡发送,然后聚合执行服务调用: .transform(...) .split(). .publishSubscribeChannel(pubSub
如何为以下Spring Integration DSL Http.outboundGateway操作编写JUnit: integrationFlowBuilder .from(integerMessageSource(), c -> c.poller(Pollers.cron("0 0/1 * 1/1 * ?") .handle(Http .outboundGateway("http://localhost
在我的应用程序中,我希望在多个中重复使用相同的消息转换器 在这样的链中,我对不同的端点执行http请求,并且我需要添加相同的基本身份验证头。我只想声明一次添加头的代码,即: <int:header-enricher id="authHeaderAdder"> <int:header expression="'Basic ' + new String(T(java.util.Base64).encoder.encode(('${http.user}' + ':' + '$
也就是说,可以将错误消息从全局errorChannel自动发送到特定目标,只需设置以下属性: spring.cloud.stream.bindings.error.destination 我真的对这部分感到困惑。仅添加属性不起作用,我使用RabbitMQ,配置了Exchange和队列。所以我可以在我的应用程序中看到@ServiceActivator处理的错误,但它不会发送到RabbitMQ中的myErrors exchange。此属性似乎未定义errorChannel的出站绑定 如果在应用程序
我们正在分析从spring integration 4.3升级到5.x,以便在具有动态url的http出站网关的流中使用即将推出的RateLimiterRequestHandlerAdvice,但在文档中找不到示例,这可能吗 <int-http:outbound-gateway request-channel="request" reply-channel="response" url-expression="headers.serviceUrl" ht
我在遗留项目的集群环境中设置入站通道适配器时遇到问题。 每个节点都在运行代码,我的结果很糟糕 所以我需要阻止它运行,除了1个节点。 我不太熟悉spring集成,在阅读了大量文档后,我发现只有ftp的集群解决方案。但我没有ftp,也不需要依赖它 那么,有没有针对顺序入站通道适配器的集群解决方案,或者如果没有,至少有jdbc的集群解决方案 提前感谢您可以使用zookeeper和SmartLifecycleRoleController选择一个实例作为领导者 看
即使启用了的信息,也不会记录信息日志 org.springframework.integration 您需要显示日志记录子系统配置。`((Order)m.getPayload()).getOrderId()`-看起来没有该类型的反序列化。或者你只是不显示整个配置。。。如果类型错误,则应引发错误,而不是日志记录。我的意思是:您是否尝试过只log(),而不尝试操纵负载? IntegrationFlows.from(Jms.messageDrivenChannelAdapter(connectionF
我正在尝试在我现有的一个应用程序中升级spring集成流,并提供反应流支持。所采取的方法是将网关方法的参数和返回类型更改为Mono。流平稳执行,当回复到达网关时,它会导致java.lang.IllegalArgumentException:“beanFactory”不能为null 我使用的是SpringBoot2.3.0 inputChannel是一个DirectChannel gatewayReplyChannel是FluxMessageChannel 有人能帮忙吗?必须修复Messaging
我有一个流,它使用一个基于发布/子通道的网关和两个订阅者向两个SQS队列发送消息。在这两者之间,我有一个链来做消息转换。聚合器用于汇总每个网关调用的报告。Happy path工作正常,但是当我的transformer抛出错误时,我收到了此消息回复消息,但是接收线程已经收到回复,聚合器被调用,但是将来会调用。在运行程序中的get永远不会返回。要测试的示例配置和代码如下所示: 配置 聚合器 公共类DataResponseAggregator{ 公共地图聚合(列表响应){ Map resultMa
我想使用EmbeddedKafkaBroker来测试涉及KafkaMessageDrivenChannelAdapter, 看起来消费者启动正确,订阅了主题,但将消息推送到EmbeddedKafkaBroker后,处理程序不会触发 @SpringBootTest(properties = {"...."}, classes = {....class}) @EmbeddedKafka class IntTests { @BeforeAll static void setu
我使用具有以下配置的入站通道适配器: <file:inbound-channel-adapter id="myAdapter" directory="inDir" auto-create-directory="true" prevent-duplicates="tr
我最近将si添加到我的项目中,并且对此非常满意。我的日志记录有问题。我正在使用logback,所有工作正常;但是,我的敏感信息在系统中流动,无法按原样记录。某些数据在记录之前必须被截取和屏蔽。如果我将日志级别配置为低于警告,则会看到此敏感信息。过滤所有绑定到日志的消息的最佳方法是什么?我正在为si服务器使用带有服务激活器的入站网关。我正在为si客户端使用异步出站网关。不清楚日志记录与Spring集成的关系 对我来说,根据日志框架编写一些定制的Appender就足够了 从另一方面,您可以在使用SI
我是Spring Integration的新手,尝试构建一个应用程序,使用和处理来自Kafka主题的消息。 我使用KafkaHighLevelConsumerMessageSourceSpec成功地处理了这些消息: @Bean IntegrationFlow consumer() { final KafkaHighLevelConsumerMessageSourceSpec messageSourceSpec = Kafka .inboundChannelAdapter
我正在发送关于主题的消息,并且可以使用kafka控制台和使用main方法的Java消费代码阅读相同的消息。但消息并没有从消费者配置xml中读取。请帮助解决此问题。我使用的是messageint-kafka:消息驱动的通道适配器。 春季卡夫卡1.3.0.0版发布 消费者Java代码 组件(value=“messageProcessor”) 公共类消息消费者{ 公共无效读取器(地图有效载荷){ 系统输出打印(“测试”); } } 您的配置有几个问题 首先,您的“消费者”和通道适配器具有相同的be
下面我有一个程序来发送消息和使用队列中的消息,现在我已经注释掉了发送部分,只想使用队列中的消息,消息可以是字符串或对象消息类型,我已经为其配置了路由器 现在,我下面的程序没有使用队列中的文本消息,请建议如何克服此问题,下面是我的配置,正如您所见,我已注释掉发送方部分,因此队列中唯一的读取部分是活动部分 另外,当我现在观察到消息正在被消耗,但文件并没有被生成,这意味着在配置有效负载路由器之后出现了一些错误 http://www.springframework.org/schema/bean
我正在尝试使用具有以下值的hashmap设置对象UriEndpointmapping的属性setendpointmapping: UriEndpointMapping uriEndpointMapping = new UriEndpointMapping(); Map<String,Object> endpointMap = new HashMap<>(); endpointMap.put("/miservicio/cliente", gateway); endpoint
我有一个由入站适配器轮询的文件。 在环境方面,我有多个节点轮询NAS位置上的单个文件(所有节点都可见),并且防止重复是正确的 令人惊讶的是,如果我重复放置一个文件,则在服务器重新启动之前,没有节点选择该文件 假设spring集成用于将此信息保存在spring上下文中,那么如果一个节点遗漏了此信息,则其他节点应该会选择此信息 有人能解释一下这个标志或元数据在哪里维护吗?请参阅。您需要一个带有共享元数据存储的FileSystemTempersistentAcceptOnceFileListFilte
当Spring集成使用HttpMethod.PATCH操作执行Http.outboundGateway调用时,出现异常: Caused by: java.net.ProtocolException: Invalid HTTP method: PATCH at java.base/java.net.HttpURLConnection.setRequestMethod(HttpURLConnection.java:487) at java.base/sun.net.www.protocol.http
作为spring引导过程配置的一部分,我创建了多个非常相似的集成流。 我当前的配置代码如下所示: @配置 公共类MyConfig{ @组成部分 公共静态级流动工厂{ 公共集成流createFlow(字符串值){ 返回IntegrationFLows.from ... .get(); } } @豆子 公共集成flow1(FlowFactory FlowFactory){ 返回flowFactory.createFlow(“1”); } @豆子 公共集成流程2(流程工厂流程工厂){ 返回flowF
你能帮我做一下spring集成吗 我有一个集成流程,用于使用http向其他系统发送post请求 我可以在发送后获得原始消息,因为我想对成功和错误执行其他操作 ErrorHandler只有HttpClientResponse,但响应正文是空的,我需要原始消息来处理这种情况 同样的情况下,成功的回应。我没有原始消息信息,无法执行下一个操作 @Configuration public class IntegrationConfiguration { @Bean public Inte
我有一个jms出站通道适配器。我想向我的ApacheArtemis代理发送一条消息,并添加一个延迟 <int-jms:outbound-channel-adapter connection-factory="scheduledConnectionFactory" channel="tnpScheduledOutboundChannel" destination="tnpScheduledQueue" /> 该头作为spri
我有intaws:sqs消息驱动通道适配器,如果我在其上设置errorChannel,则下游异常会转到那里 但是,如果我没有设置错误通道,则不会记录异常。它不会转到预期的errorChannel。有没有一种方法至少可以记录这些异常?是否有一个默认的errorlogger,可以简单地记录这些错误 更新 根据注释发布XML和DSLconfig。通过在ServiceObject上为@NotBlank字段设置null,在持久性层模拟错误 ReThrow维修激活器: @组件 公开课改课{ public
我有一个部分反应流,它从SQS读取数据,执行一些逻辑,保存到DB(R2DBC)。流在反应通道上运行,该通道是SqsMessageDrivenChannelAdapter的入站通道 问题是: handle方法(.handle((有效负载,标头)->validator.validate((Dto)有效负载))中引发的异常未到达通道。errorProcessingFlow未触发,我需要errorProcessingFlow记录并将异常抛出到SimpleMessageListenerContainer