我是Spring集成的新手。关于Spring集成,我有几个问题
中有哪些实时场景
spring集成可以是哪一种
实施
创建一个
额外弹簧集成层
如果邮件系统不可用
在spring中实现,可以使用spring吗
集成仍然可以用于
整合
是不是像spring集成可以连接两种不同语言开发的两个系统一样?真正的场景很多。Spring集成是一个框架,允许您基于企业集成模式构建消息驱动的系统。
注意,当我说消息传递时,我并不是指远程消息传递,比如JMS或类似的东西。消息传递首先是一种体系结构范例(模式)
当前,目录和固定速率轮询周期取自属性文件
<file:inbound-channel-adapter id="batchFilesStock" directory="#{configurationService.configuration.getProperty('qlacceleratorcore.batch.impex.stockbasefolder')}"
filename-regex="^(\d+)\-(.*).csv" comparator="fileOrderCompa
我是新来的。我正在使用SI TCP多路复用示例中的代码作为我正在编写的应用服务器的起点。服务的调用方已经存在,并且将发送以字节长度头为前缀的有效负载。我对反应的相关性有点问题。正如您在下面看到的,我更改了多路复用示例,首先向传入请求添加一个相关id头,然后再转到发布-订阅通道。代码的其余部分与示例基本相同
所以,问题来了。从TcpSendingMessageHandler调用MessageController时,相关id标头不可用,TcpSendingMessageHandler序列化并发送消息
查看AbstractCorrelationMessageHandler的代码,聚合器似乎基于相关id获得了一个锁,以强制单个线程处理属于相同相关id的消息组。这是有意义的,事实上,我想确保一旦消息从聚合器中释放,只要它们在同一线程中被任何下游组件处理,聚合器就不应该再释放属于相同关联id的任何消息(如果它们进入)
例如,如果我发送关联id为“1”的消息“A”,并立即发送属于相同关联id的消息“B”,并让聚合器释放这两个消息。现在,如果在聚合器之后有一些耗时的组件,我希望在线程处理“A”完成之前不
到目前为止,我能够从前端向存储过程(Oracle)传递n个参数,并从后端接收一个游标(具有n个列)(感谢他的伟大建议)
然而,下面的场景仍然无法解决,我试图从后端接收的不仅仅是一个游标(具有n个列),还有一个返回值以及n个游标(具有n个列)。我需要帮助:)
到目前为止,我所做的工作如下:
<!-- Stored Procedure Outbound-Gateway = To call a database stored procedure -->
<int-jd
从一个频道
<!-- messages missing a vital piece of information -->
<int:channel id="inChannel" />
我有一个激活器来读取消息
<!-- read the message and prepare an http request for the extra information -->
<int:service-activator
input-channel
我们有一个接收事件通知的入站通道适配器。消费者标准的复杂性限制了我们使用简单路由密钥分发消息的能力,因此应用程序使用拆分器通过直接交换将消息发送到感兴趣的订阅者队列
我们希望在出站通道适配器上使用publisher confirms,以确保传递到客户端队列。我们希望等待发布者确认原始消息,如果未收到发布者确认,或者如果ack==false,我们希望nack来自入站通道适配器的原始消息
我假设这将在兔子模板的确认回调中完成,但我不确定如何完成。(如果可能的话)
目前,我们正在通过将通道和传递标
我有一个web服务,它接收对象,通过AMQP发送通知,并向请求者返回JSON响应。每个请求都是在一个线程上执行的,我正在尝试实现publisher confirms,我正在努力解决如何设置它。我有它的工作,但我不喜欢我这样做
我的做法是:
在邮件上添加一些标题
拥有一个包含2个订阅者的发布-订阅频道
订户1)创建一个阻塞队列,使其就绪
并通过amqp发送消息
订户2)开始在该队列上拉5秒钟,直到得到确认
出站通道适配器将其发布者确认发送给服务激活器
PublisherConfigReceive
大家好,任何人都可以帮助我为下面的spring上下文配置获得等效的编程代码
<bean id="ftpClientFactory" class="org.springframework.integration.ftp.session.DefaultFtpSessionFactory">
<property name="host" value="${host}"/>
<property name="port" value="${availableSer
我有一个目录列表(将获得它从数据库只有我们不能预定义或硬编码)。它可能会改变。如何从目录中动态轮询?有人能帮忙吗?如果您只需要在初始化时获取值,可以通过多种方式完成;您可以使用SpEL调用一些bean来获取每个适配器的值:
#{somebean.findDirectoryFor('foo'))
#{somebean.findDirectoryFor('bar'))
等等
如果在运行时(应用程序运行时)可以更改,则可以使用,在每次轮询时调整文件ReadingMessageSource中的目录。
在我的应用程序中,消息到达inque,然后发送到输出队列。我们通过spring集成来实现这一点。我的要求是,如果连接到输出队列时出现问题,它应该尝试重新连接3次,延迟30秒,最后如果失败,则记录异常。你能帮我解决这个问题吗?我的配置文件-
您没有显示任何Spring集成配置,但假定您使用的是JMS出站通道适配器,您可以添加一个具有适当配置的SimpleRetryPolicy
但是,如果相同的代理也用于入站队列,则该会话将被中断,消息将被重新传递;因此,您最好在代理中设置重试策略。您没有显示任何
我想在流定义期间对AccessKey和secretKey in选项进行编码。在xd或integration中是否有相同的实用程序?我想对key in选项进行编码
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
我有一个模块s3拉取器,它从was s3拉取文件。在生产过程中,我在尝试创建流时遇到了一些问题。但是本地单节点工作正常,我尝试在本地设置3节点集群和1个管理节点,工作正常。
下面是我的应用程序上下文
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XM
有没有办法知道上次spring integration成功检查消息的时间?具体地说,它上次运行时,无论是否找到可以转换为消息的内容,都不会出错
我有一个邮件入站通道适配器(带有轮询器)连接到路由器,路由器将消息吐出到各个通道。实际的轮询逻辑封装在AbstractPollingEndpoint中的内部可调用轮询任务实现中:
Callable<Boolean> pollingTask = new Callable<Boolean>() {
@Override
我已经将JDBCMessageStore绑定到Delayer组件,这样我们就可以避免在系统发生故障时丢失消息,而内存中的MessageStore在系统关闭时会被清除
我已经创建了表INT\u MESSAGE,INT\u MESSAGE\u GROUP和INT\u GROUP\u TO\u MESSAGE。在测试时,似乎要插入表。
我看到INT\u消息,INT\u消息组在延迟器拾取消息后为空,这是功能吗?要在延迟器拾取消息后从持久存储中删除消息?我仍然在INT\u GROUP\u TO\u MES
我正在尝试使用SpringBoot,集成ftp示例(,15.5.1)。我能够从远程目录中读取文件,有些情况下它不会删除带有标志setDeleteRemoteFiles(true)的文件。如果我没有设置任何标志来删除远程文件,请告诉我
@Bean
public SessionFactory<FTPFile> ftpSessionFactory() {
DefaultFtpSessionFactory sf = new DefaultFtpSessionFactory();
我目前正在使用Spring集成,应用程序对从MQ收到的每条消息执行以下操作
读留言
转化
将转换后的消息发布到Api
为了提高吞吐量,我想改为
读留言
转化
发送到队列通道
使用10条已转换的消息调用批处理api
是否有人能告诉我如何实现此触发器,即等待队列深度为10或从第一次插入消息开始的时间为2秒,然后用10条消息调用Service Activator?使用聚合器(使用发布策略size==10)而不是队列通道。相关性策略可以是一个简单的常量,因为您只聚合大小。谢谢您的帮助……我已经开始更
我正在使用SimpleWebServiceInboundGateway,目前我有一个网关将请求放到一个通道上,然后是一个从该通道消耗的流。一切似乎都很顺利
我的问题是,如果您有多个不同的soap端点服务,每个端点的操作略有不同,那么如何将这些端点映射到不同的流,正确的方法是什么?是否希望每个soap web服务端点都有一个新的SimpleWebServiceInboundGateway,并使用EndpointMapper映射到每个端点?或者有没有更好的做法?我不太确定它是否会有多个Soap网关
我找不到一个简单的例子来单元测试SpringIntegrationDSL,它涉及从队列中提取消息并进行rest调用
我看了一些示例,但不清楚下面代码的限定符等,我想为这些代码编写单元测试
IntegrationFlows.from(Jms.inboundGateway(connectionFactory)
.id("inputChannel")
.destination(sourceQueue)
.jmsMessag
我已经注册了一个asynchHandler,还向SQS出站流添加了一个success频道。success频道有一个int:logging频道适配器端点。但是,我无法看到来自此适配器的任何日志。asynchHandler能够接收回调,但在success频道上没有任何内容。
在SqsMessageHandler中,我看到我们正在obtainAsyncHandler方法中设置一个输出通道,但我没有看到在任何地方设置成功通道。我错过什么了吗?
我更喜欢使用成功和失败通道,而不是AsyncHandler回
我正在尝试学习如何将集成流构建为单元,并将它们连接起来
我设置了一个非常简单的处理集成流程:
IntegrationFlow processingFlow = f -> f
.<String>handle((p, h) -> process(p))
.log();
flowContext.registration(processingFlow)
.id(&q
我正在使用R2dbcMessageSource查询表中的项,并希望使用其中一列创建要发送给消息处理程序的消息
查询的结果是一条消息,这非常有意义。我想获取event.getDetails并创建一条消息
使用DirectChannel和Transformer,我尝试了类似的方法
@Bean
@Transformer(inputChannel = "fromR2dbcChannel", outputChannel = "fromTransformer"
可以包含带有对象类型值的replyChannel键。我知道,在我的自定义端点中,我可以按照自己的意愿使用此标题,但我认为replyChannel标题有一些默认含义。请向我解释何时使用replyChannel头。对于大多数应用程序,通常不需要操纵replyChannel头。框架要求将应答路由到从各种类型的入站网关开始的基于请求-应答的流。高级流可能会将应答通道设置为通道或通道名称,但如果它们是请求/应答,源自网关(或MessagingTemplate),则最终必须还原原始标头
每当以编程方式或在网
我在中发布了一个关于如何处理从聚合器中发布消息组的逻辑的问题,并得到了一些有用的回答,但我无法使逻辑按我所希望的那样工作,因此我将退后一步,在试图理解聚合器如何工作时问一个更基本的一般性问题
以下是我正在努力实现的目标。我想将这些消息发送到我的spring集成流,这些消息基本上通过聚合器路由
in.send(MessageBuilder.withPayload("a1").setCorrelationId("1").build());
in.send(MessageBuilder.withPay
出于某种原因,以下执行器通道仅处理5个项目,并丢弃其余项目:
<task:executor id="ImportItemExecutor" pool-size="5"/>
<channel id="ImportItemChannel" datatype="com.processing.data.generic.ImportItem,java.lang.String">
<dispatcher task-executor="ImportItemExecu
我们计划将我们的代码从SpringIntegrationXML迁移到DSL。在XML版本中,我们使用通道名模式进行跟踪
例如:如果频道名称有*\u EL.*,我们将拦截该频道并进行一些日志记录
如何在Java dsl中实现这种或更简单。GlobalChannel拦截器是为您准备的。它是Spring集成核心的一部分
所以,你必须这样做:
@Bean
public MessageChannel bar() {
return new DirectChannel();
}
@Bean
@Glo
当我在Spring集成存储过程出站网关的存储过程的参数中使用bean引用时,我试图确定我的bean引用未被识别的原因。我已经能够在这两者之间放置一个服务激活器,并使用bean作为有效负载创建一条新消息,它工作得很好。但是为什么我不能用真正的豆子呢
下面是一段代码:
<bean id="updateDataContentsMapper" class="org.companyname.connector.support.UpdateDataContentsMapper" depends
我的请求。是在指定的时间间隔(例如10分钟)轮询目录。如果在目录中找到一个特定扩展名为*.xml的文件,则在指定的时间间隔(例如10分钟)后,它只会使用(即拾取和删除)该文件并打印名称,否则它会发送一封邮件,表明该文件未被拾取(即,已使用)或该文件未出现
有两种选择,一种是通过Spring集成,另一种是核心Java的WatchService。以下是我到目前为止编写的Spring Integration中的代码:
<int:channel id="fileChannel" />
<
我正在编写我的第一个spring集成用例。我想在纯SpringJava配置中完成所有工作(没有XML配置和DSL,只有注释)。到目前为止,尽管缺乏文档和示例,但一切正常
但现在我对delayer有问题了。并没有明显的注释,文档中也并没有关于在DSL或注释中配置延迟器的内容。delayer是否仅在XML配置中受支持?这方面的Java DSL应该是显而易见的:
@Bean
public IntegrationFlow delayFlow() {
return IntegrationFlows
我在我的项目中使用Spring集成。我正在尝试从spring集成核心:jar:3.0.1.RELEASE迁移到spring集成核心:jar:4.3.2.RELEASE,java8,spring 4。升级spring集成版本后,我面临一些问题。我可以看到,同一条消息被发送到同一个通道两次(第一次是格式良好的xml,然后是包含记录器消息的xml),而没有任何正当理由。升级前一切正常。这里可能出了什么问题?有什么想法吗?没有足够的信息来揭露这个问题。也许类似于org.springframework.i
我想使用'mget'命令从sftp服务器下载文件。以下是我的java配置:
@Bean
public SessionFactory<ChannelSftp.LsEntry> sftpSessionFactory() {
DefaultSftpSessionFactory factory = new DefaultSftpSessionFactory(true);
....
return new CachingSessionFactory<>
我想一个接一个地进行两个连续调用,但对两个调用使用相同的请求消息。但如我的示例代码所示,默认情况下,来自第一个post调用的响应成为第二个调用的请求。在spring集成中,这种模式最优雅的解决方案是什么
public IntegrationFlow test() {
return IntegrationFlows
.from("testChannel")
.handle(httpConfigurations.postCall1())
.handl
目前,我正在通过Spring integration TCP进行外部供应商集成,通过创建不同的@ServiceActivator以实现唯一的IP/端口组合,将IP 1、端口1、端口2、端口3和端口1、端口2和端口3发送到不同的端口
在正常的消息加载中,一切都正常工作,但是,当我将负载增加到40-50个事务/秒时,通过等待响应,我看到消息超时
下面是其中一个Service Activator,其他也以类似的方式设置。如果我的主ip不可用,我将使用FailoverClient ConnectionF
我正在实现一个SpringBoot应用程序,它连接到不同的imap服务器以接收电子邮件。
有很多imap服务器,它们的数量将会增加。
该应用程序将在多个实例中运行
我想使用spring集成邮件。但我不想为每个应用实例中的每个imap服务器创建集成流。
我想知道是否可以避免为每个imap服务器创建单独的集成流?
它可以是这样的:我们创建一个将手动运行的流(例如通过事件),该流将动态创建所需的imap接收器、接收邮件并完成
是否可以使用spring集成邮件实现类似的功能
如果不是,我必须为每个实例上
我们希望能够在创建频道后更改频道上的FTP目录。在我们的特定用例中,FTP put的子目录是在运行时确定的。例如:我们有用户上传的每日报告。它应该存储在FTP服务器的每日文件夹中。例如:test/reports/27-11-2012/abc.pdf,test/reports/28-11-2012/abc.pdf等
有些人喜欢这样吗
<int-ftp:outbound-channel-adapter id="ftpOutbound" channel="ftpChannel" remote-d
我必须根据输入XML中的某个基集调用2个不同的XSL
我不想为此任务编写两个单独的转换器。当前代码是这样编写的
<int:router input-channel="inputchannel"
default-output-channel="outputChannel" expression="headers.get('someValue')">
<int:mapping value="x" channel="xChannel" />
如何在使用enricher模式时使用筛选或从链返回
这是我的设想
我使用enricher模式从请求通道中检索数据,然后使用它来丰富有效负载。
请求通道将调用多个Web服务来检索数据。仅当第一个Web服务具有有效数据时,才需要调用第二个Web服务。如果没有,我需要回到恩里彻。
当筛选发生时,我得到以下异常:org.springframework.integration.handler.ReplyRequiredException:处理程序未生成任何回复
我的消息流是否正确或需要添加其他内容
我看过聚合器的代码,据我所知,它执行以下操作:
向组中添加消息
如果可以释放该组,则:
完成组并将其发送到输出/回复通道
如果(使组过期)
从邮件存储中删除组和邮件
否则仅删除邮件
在这里,我需要一些ACID事务支持来完成全部或什么都不做,但在阅读文档之后,我找不到如何完成。你能告诉我这是否可能,如果可能,我怎样才能做到
提前谢谢
重视
Guzman您可以使到聚合器的入站(直接)通道具有事务性
<tx:advice id="txAdvice" transaction-manager="tr
首先,我今天才开始研究Spring集成,所以我的经验很少。我已经使用spring integration进行了基本的计划ftp文件解析器设置:
<int:channel id="ftpIn" />
<int-ftp:inbound-channel-adapter
channel="ftpIn"
session-factory="ftpClientFactory"
filename-pattern="*.xml"
local-director
有没有办法禁用此日志?我问这个是因为我们拥抱日志文件
2014-09-19 09:26:12217信息AbstractCorrelationMessageHandler:571-使用correlationKey[XXXXX]将消息组过期
提前谢谢!
古兹曼是一个简短的答案。您应该为该类别指定较低的日志记录级别:
log4j.category.org.springframework.integration.aggregator.AbstractCorrelatingMessageHandler=W
我正在尝试使用Spring Integration Java DSL创建一个请求/应答流,如下所述:
IntegrationFlows.from(directChannel)
.handle(Jms.outboundGateway(connectionFactory)
.requestDestination(requestDestination)
.replyDesti
以下消息驱动程序通道适配器有问题
@Bean
public IntegrationFlow jmsInboundFlow() {
return IntegrationFlows.from(Jms.messageDriverChannelAdapter(this.jmsConnectionFactory)
.outputChannel(MessageChannels.queue("inbound").get())
我已经在下面配置了网关。这可以作为部署在tomcat上的web应用程序服务层的SI流入口点。调用方法将从服务层调用。SI流有许多组件,它使用拆分器、路由器和聚合器,最后将响应发送到outputChannel
在SI流中,我使用任务执行器的数量使某些流并行运行(特别是在拆分器之后)
SI如何确保它将正确的响应返回到服务层的调用?是否有可能将一个用户请求的响应发送到另一个请求?如果是,是否需要特殊处理?如果需要,我可以粘贴完整的配置
<!-- Entry point Facade to DSL
我试图创建一个包含jms驱动的通道适配器的链,作为链中的第一步,但是它抛出以下异常。如果我把它从链条上取下来,它会工作的。jms通道适配器是否可以位于链组件中
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/integration"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-ins
我是Spring集成的新手,正在使用Spring 4.2.4。
我试图用jdbc:storageproc出站网关调用存储过程。我已经在使用SpringJDBC了
存储过程使用customRowMapper返回游标和am,如下所示
new SqlOutParameter(A_RC, OracleTypes.CURSOR, null, new MyCustomDataExtractor())
MyCustomDataExtractor实现SqlReturnType并返回自定义对象
现在的问题是如
下面是我的出站适配器,我想知道这里nack通道的用法
<int-amqp:outbound-channel-adapter channel="fulfillmentOutboundChannel"
routing-key="xyz"
amqp-template="transactionalRabbitTemplate"
我需要审核通过spring集成流的每个消息,非常基本的消息
应用程序从int-redis:queue入站通道适配器读取数据,并在int-http:outbound网关中写入数据
输出网关有一个应答通道,以便接收http方法的响应,此时正是我想要注册反审核信息的时候,包括初始消息和http响应
如果http方法失败,消息将转到errorHandler,我可以获得带有时间戳和有效负载的历史对象,这对于审计来说是完美的
但是如果http方法起作用(代码200201…),我会收到一条包含Response
当我在迭代器中使用split()时,有没有办法使用或模拟ReleaseStrategy
@Bean
IntegrationFlow flow(CourseRepository courseRepository, EnrollmentRepository enrollmentRepository) {
return IntegrationFlows.from(courseRepository, "findAllWithEnrollmentToProcess", c -> c
.pol
嗯,我正试图在春季使用RestTemplate使用RESTWebService。
该服务返回一个JSON,其中包含如下所示的对象列表
[
{
"name": "123",
"ids": {
"y": 36.41666667,
"x": 39.58333333,
"z": 12
},
"ip": "10.219.90.12",
"rate": 67.5,
"id": 1
},
{
"name":
我的流程以如下内容结束:
.handle(ftpAdapters.rtwFtpOutboundHandler(), out -> out.advice(after()))
.get();
在建议中,我们需要处理以下代码:
@Bean
public ExpressionEvaluatingRequestHandlerAdvice after() {
logger.debug("Evaluating expression advice. ");
ExpressionEvalu
1 2 3 4 5 6 ...
下一页 最后一页 共 35 页