我在Spring集成项目中创建了一个Feed类,目的是将其中包含Feed的任何有效负载映射到我的类。我不能使用spring专有的atom提要消息转换器,因为我们有不同的格式要求
我遇到的问题是,当我提交一篇带有有效负载的文章时,有效负载不断转换为专有的提要类,而不是我编写的提要类。我想这里的大问题是spring atom消息转换器和我的都定义了一个提要类
那么,在处理有效负载时,有没有办法强迫spring使用我的Feed类,而不是它自己的Feed类
非常感谢,,
R
PS:我尝试将请求有效负载类
本周末,我遇到了一个问题,MailSendingMessageHandler中的标题区分大小写。邮件头在SI中是否需要区分大小写?一项简短的研究让我发现,电子邮件标题通常应该是不敏感的(1)
这是SI中的疏忽还是我遗漏了一些明显的东西
RFC讨论的是通过网络传输的邮件头(例如SMTP)。MailSendingMessageHandler接收Spring集成(SI)消息,并将SI头映射到SMTP头
SI标题区分大小写
出于这个原因(除其他原因外),我们建议对标头使用框架常量,而不是编写自己的值
我正在尝试使用FtpInboundFileSynchronizer,但无法修复它。它没有报告任何问题,也不工作。我指的是来自
您的注释错误:@SpringBootConfiguration应该是@SpringBootApplication
这将添加@使能集成非常感谢。在这一变化之后,它运行良好。
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import org.apache.commons
我试图通过服务器发送的事件通知所有用户事件,但不知道原因,但它不起作用。如果我使用队列,我可以通知单个用户,但如果我将配置更改为使用主题,它将不起任何作用。A您可以在下面看到,我正在jmsTopicTemplate中使用队列和注释模板.setPubSubDomain(true),然后它将发送给单个用户
@Bean
public Publisher<Message<LocationData>> jmsReactiveSource(ConnectionFactory
已将通道适配器定义为:
<int:channel id="target">
<int:queue />
</int:channel>
<int-jdbc:inbound-channel-adapter id="adapter" channel="target" query="${int.poll.query}" update="${int.update.query}" data-source="mock-datasource">
我想在一个目录中使用read文件并移动到另一个目录,为此我使用spring集成。当请求来自另一个系统时,我想执行任务(将文件移动到输出目录)。我不想重复运行文件移动器,有没有办法在Spring集成中做到这一点
提前谢谢大家,,
Udeshika你可以用民意调查工具做一些技巧,比如我在文章中提到的FireonCatrigger。但在这种情况下,最简单的解决方案可能是在您的上下文中定义类型为FileReadingMessageSource的,而不是使用入站适配器;在main()中获取对它的引用(co
在流程开始时,我有一个文件入站适配器,它定期读取目录:
<int-file:inbound-channel-adapter id="filteredFiles"
directory="${controller.cycle.lists.input.dir}"
channel="semaphoreChannel" filename-pattern="*.xml">
<int:poller fixed-delay="3000"/>**
</i
考虑到任何消息总线都可以使用spring xd部署,spring xd是否提供了任何API,可以根据xd/config/servers.yml或任何其他类似位置中的配置写入部署的消息总线,例如Kafka/rabbitmq
<beans:bean id="requestQueue" class="org.apache.activemq.command.ActiveMQQueue">
<beans:constructor-arg value="queue.demo"/>
我有一个10号的列表,我想用最大6号进行聚合。
在这种情况下,它应该是这样工作的:前六条消息聚合为一条消息,然后立即(没有任何超时)将接下来的四条消息聚合为第二条消息。
如何在spring集成中实现这一点?我尝试使用releaseStrategy,但我只能在其中定义最大大小,然后剩下的消息(在我的例子中是4条消息)正在聚合器中等待更多消息(因此满足最大大小条件)。我不想等待聚合器超时,因为我知道我的列表的大小是10,所以在第四条消息之后没有什么可等待的,它应该立即创建第二条聚合消息。使用自定义的
我有一个spring xd源组件,它从s3中提取文件并逐行拆分,因为每一行都是记录,而sink是日志。现在我想获得文件名和文件中的记录行数(文件中的记录数),并将其作为头传递。我如何在xd中实现这一点
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/X
我实现了ChannelInterceptor,并通过在xml上配置使其工作。但它不适用于基于注释的bean配置
试着让它发挥作用-
@Bean
@ConditionalOnProperty(name="enableLog", havingValue="true")
@GlobalChannelInterceptor(patterns="${message.input.channel},${message.output.channel},${message.error.channel},${mes
我使用Spring集成调用该服务,该服务返回字节数组,但出现以下错误
public ResponseEntity<byte[]> getInvoiceResponse(Long id, Long releaseId) throws Exception {
ByteArrayOutputStream stream = (ByteArrayOutputStream) Client.getInvoice(id,sellerId);
final HttpHeaders h
我正在使用Spring集成和Spring Boot在基于Spring指南的定位机上进行一些开发。我正在使用Gradle构建和运行应用程序。下面的代码用于引导Spring,我可以通过按enter键终止应用程序
public class Application {
public static void main(String[] args) throws Exception {
ConfigurableApplicationContext ctx = new SpringAp
我使用了下面的spring配置,使用aggregator组合发布-订阅通道的结果。但是聚合器只填充发布-订阅通道中第一个服务激活器的响应,而不等待其他服务激活器的响应。我应该如何修改配置,使聚合器等待所有4个服务激活器的响应
<int:bridge id="ValidationsBridge" input-channel="RequestChannel" output-channel="bridgeOutputChannel"></int:bridge>
<
最初,我们与google Pub/Sub的CIM通信流程如下:
应用程序接受消息
检查它是否不存在于幂等cystore中
3.1如果不存在-将其放入幂等存储(键是唯一头的值,值是当前时间戳)
3.2如果存在-忽略此消息即可
处理完成后-发送确认
在acknowledge successfull回调中-从元数据存储中删除此消息
第5点是错误的,因为理论上,即使在消息处理之后,我们也可以得到重复的消息。此外,我们发现有时即使调用了成功的回调()也可能无法删除消息,所以我们决定在处理消息之后更新值,并
以下是我的频道设置:
jdbc消息存储支持的队列
将队列连接到发布子频道的网桥
发布子频道上配置的轮询器是事务性的
现在,当任何一个订阅服务器中出现异常时,事务将回滚,消息将永远重试。所有订户再次处理该消息。如果这至少在订阅服务器中是一个永久性异常,则消息不会被任何其他订阅服务器处理
这里最好的异常处理策略是什么?
我更喜欢订阅服务器上的异常处理,即只有失败的订阅服务器将重试,其他订阅服务器将处理消息并继续
如何在spring集成中实现这一点
这里有更多的细节
如果轮询器是事务性的,并且消息在至
我正在使用spring集成对两个web服务进行并行调用,我想知道当一个服务因某种原因停机时如何处理。假设我得到一个超时异常,那么我如何在spring集成中处理它
<int:service-activator input-channel="wslService-request-b"
method="webServiceCallB" output-channel="wslService-reply" ref="LITESWebServiceCall">
<int:p
我有一个从标准数据库查询开始的集成,它会更新数据库中的状态,以表明集成工作正常。它起作用了
但是,如果无法处理数据并引发异常,则不会按预期更新状态,但我希望使用“KO”状态更新数据库行,以便同一行不会反复出现故障
有没有办法在集成失败时提供第二个查询来执行
在我看来,这是一种非常标准的做事方式,但我找不到一种简单的方式。我可以在集成的每个步骤中捕获异常并更新数据库,但它会产生耦合,所以应该有另一个解决方案
我尝试了很多谷歌搜索,但我什么也找不到,但我很确定答案就在那里
以防万一,有我的xml配置
我正在尝试为将在SI流中使用的所有消息处理程序创建一个通用错误处理过程。这将,,
1.连接异常时重试。
2.使用断路器停止SI流。
3.将失败的消息回滚到通道
我已经实现了重试和断路功能。但是,我无法将消息回滚到频道。
我尝试使用交易建议。但它不起作用
这是代码
<bean id="retryAdvice"
class="org.springframework.integration.handler.advice.RequestHandlerRetryAdvice">
我有一个场景,在这个场景中,我必须向rest服务发送消息,并且我计划使用重排序器。此重排序器的行为必须是:
按时间(hh:mm:ss)订购邮件:邮件上的数据
仅在信息在公交车上停留一段时间后发布(即2分钟)
由于默认的重排程序不适用于此目的,我决定开发一个定制的重排程序,将重排消息组处理器更改为定制的重排消息组处理器
我成功地使用了服务激活器,但我必须明确地将输出通道定义为属性。有没有一种方法可以在xml声明中使用output channel属性
使用“输出通道”属性时,会发生以下错误:
C
自从升级到spring integration java dsl的M3后,我在使用收件人列表路由器的任何流上看到以下错误:
org.springframework.messaging.MessageDeliveryException: no channel resolved by router and no default output channel defined
目前还不清楚如何在M3中实际指定该值。端点配置器上没有输出通道选项,RecipientListRouterSpec上没有任何选
阿泰姆。很高兴看到si的新版本。
可以在spring集成流中使用reactor或rxjava吗?
像这样
例如:
使用一些集合输入xml=>reactive splitter->reactive transformer->reactive outbound首先感谢您的反馈和对我们工作的关注。我们正努力跟随现实世界的趋势,并始终保持及时;-)
好的,关于反应器或类似的反应流解决方案
我确信这将是一个好主意做你的“刮擦”流。即使Spring集成看起来像是反应流,我们是否应该以这种方式组合它们也无关紧
是否可以为每个新的唯一关联id提供一个spring聚合器实例?会为每个唯一的关联id创建一个MessageStore,但我想知道是否也可以为aggregator:MessageStore创建一个1:1的实例
我希望aggregator类中的实例值基于我从传入消息中提取的内容,这有助于我确定每个MessageStore的发布策略
更新:术语已更正 每个correlationId没有单独的“数据存储”
聚合器使用默认内存中的MessageGroupStore,但可以是多个持久MessageGroup
我是卡夫卡的新手,我正在尝试使用来自卡夫卡的信息,我能够借助于来自
现在我可以阅读来自Kafka的消息,但我想用spring集成手动执行偏移管理,我可以用Kafkanconsumer使用seek方法执行此操作,我可以回到que中。我想对spring integration执行同样的操作。是否有可用的示例或文档请参阅和
ApacheKafka的新Spring(目前基于0.9客户端)支持设置初始偏移量。看
使用接受TopicPartitionInitialOffsets的侦听器容器构造函数
Spri
我有一个MVC项目,可以完成以下任务
@Autowired
SimpMessagingTemplate messagingTemplate;
private void sendAlarmUpdate(AlarmNotify alarmNotify) {
messagingTemplate.convertAndSend("/topic/notify/alarm",alarmNotify);
}
我试图使用int stomp:outbound channel adapter将其转换为Sp
我想配置一个带有Java DSL的网关,以递归方式从FTP服务器读取所有文件,因为它们位于不同的文件夹中
我怎么做?请给我一个特别的代码示例如下:
@Bean
public FtpOutboundGatewaySpec ftpOutboundGateway() {
return Ftp.outboundGateway(this.ftpSessionFactory,
AbstractRemoteFileOutboundGateway.
我有一个场景,我不想使用聚合器的默认发布策略。我想创建定制的聚合发布策略
更新:更新的集成流程:
@Bean
public IntegrationFlow fileIntegrationFlow(){
return IntegrationFlows.from(readFilefromDirectory(), fileInboundPollingConsumer())
.split(fileSplitter())
我有下面的xml
<?xml version="1.0" encoding="UTF-8"?>
<root>
<case>
<issue>
<issueid>123</issueid>
</issue>
<issue>
<issueid>456</issueid>
<
如果验证失败,是否可以使用spring集成触发邮件。handlevalidateDeal,validate步骤?我有一个场景,我轮询文件,检查文件的特定格式,如果它不是特定格式,我需要触发邮件并停止进程,如果文件名是特定格式,我运行spring批处理作业,即transformfileMessageToJobRequest
所以基本上如果验证失败,我想发送一封邮件,如果验证通过,我想触发我的spring批处理作业,即transformfileMessageToJobRequest,
是否可以在相同
碎片
消息端点表示管道和过滤器的“过滤器”
建筑学如前所述,端点的主要角色是
将应用程序代码连接到消息传递框架,并在
非侵入性方式。换句话说,应用程序代码应该
理想情况下,不知道消息对象或消息
频道
转换器、筛选器和服务激活器都是消息端点。
我不理解的是,为什么它们被调用,因为应用程序实际上可以将消息发送到输入通道,而这些端点在链的中间使用。换句话说,应用程序知道一个频道,而不是端点。
例如:
@springboot应用程序
@集成组件扫描
公共类SendToInputChannel{
@豆子
我们使用Spring批处理分区在两个JVM上并行处理多个输入文件。一个JVM中运行一个主设备和一个从设备,另一个从设备运行在不同的JVM上
在第一个JVM上启动主JVM和从JVM是通过启动Spring boot应用程序来完成的,就像启动任何其他批处理作业一样,该应用程序传递作业名称
我们通过启动传递dummyjob名称的Spring引导应用程序,在第二个JVM上启动从机。从属服务器没有作业配置,它只有用于接收消息的入站流、stepExecutionRequestHandler和步骤代码
结果:所
我正在寻找Spring IntegrationFlows中的切换运算符。我需要根据用户可以决定的属性订阅一个频道
@Bean
public IntegrationFlow flow() {
return IntegrationFlows
.from()
.publishSubscribeChannel(
subscription -> {
请帮助我解决此异常。我在Spring Boot Java应用程序中运行这个IMAP电子邮件侦听器,从我的gmail收件箱检索电子邮件
return IntegrationFlows
.from(Mail.imapIdleAdapter(imapUrl())
.autoStartup(true)
.javaMailProperties(p -> p.put("mail.imap.ssl.trust
我收到一个异常Dispatcher在outboundChannel上没有订户,无法找出原因。我相信这很简单,我已经将我的代码精简为以下一个非常简单的示例:
我的背景是:
<bean id="requestService"
class="com.sandpit.RequestService" />
<integration:channel id="inboundChannel" />
<integration:service-activator id="s
我正在使用SI 4.0,并尝试使用对象来映射transformer,如下所示
<integration:object-to-map-transformer input-channel="inputChannel"
output-channel="outChannel" >
</integration:object-to-map-transformer>
我正在inputChannel上发送一个类似Person类的对象。但当我启动测试时,它失败了,出现了以下
如何将Springsftp:inbound channel adapter配置为在特定时间(比如上午8点到晚上7点)之间运行。
目前我只有以下配置,我只需要在上午8点到晚上7点之间进行投票
。听说Spring batch会有所帮助。有什么建议吗?请具体点。用人的语言描述你的需求
例如,从每天上午8点到晚上7点,你需要每5分钟进行一次投票
在这种情况下,cron看起来像:
0 0/5 8-19 * *
我添加了以下代码。但在这里提到的时间里,它一直在进行投票。
我正在从事一个项目,在这个项目中,我使用一个FilePoller来侦听目录,并在接收任何文件时调用批处理作业。我通过调用主类[从调度器中调用,并传入类似“startPoller”的参数]来调用/启动流程,在Main方法中,我只是加载应用程序上下文,一切都很顺利
我们的Web管理员希望通过再次调用同一个主类[参数为“stopPoller”]来终止/停止此FilePoller。我尝试使用,但没有成功,因为它无法识别/关联最初创建的应用程序上下文
有没有办法停止FilePoller并通过外部调用关闭相
我正在使用SI-DSL编写SI流,所以让我先说我不;我不知道这个问题是仅与Si DSL有关,还是与Si和Si-DSL都有关
我的用例是这样的
-从队列获取消息
-将消息保存在数据库表中
-通过选择处于特定状态的消息来检索这些消息
在将来的某个时候
-进一步处理消息
我的问题是第三步。如果第三步是第一步,那就很容易了,因为我可以使用JDBCPollingChannelAdapter作为消息源。然而,我找不到在流动的中间使用一种方法。因此,在DSL术语中,我可以这样做(其中dbDataMessage
我对Spring非常陌生,对Spring集成更是如此,如果这是一个非常基本的问题,我深表歉意
我想建立一个非常基本的日志文件处理器来学习诀窍。与此非常相似:
我还想使用java配置方法,我下面的大多数示例都是XML驱动的,我很难进行翻译
最后,我希望递归地轮询日志文件的源目录,并使用持久性存储来跟踪找到的内容
然后,将要处理的文件复制到处理文件夹中,然后启动spring批处理作业来处理文件的内容
完成所有操作后,可以从处理位置删除已处理的文件
我似乎无法找到连接(使用SpEL的通用java配置)
要求:在继续下一步之前,我需要确认所有消息都已发布
所以我在消息确认通道之后添加了一个聚合器
问题:对于数量较少的ID(可能少于3000条记录),解决方案可以按预期工作。但对于数量较大的ID,聚合器会一直等待
已发布邮件的数量始终正确。因此,我在下面的代码中添加了一个db更新,以便在确认通道之后有一个计数器,并且对于较大的ID列表,计数小于ID数
<!-- service activator query database table and return list of IDs of ty
我的配置中有下面的标题enricher
<int:header-enricher input-channel="" output-channel="" id="" >
<int:header name="OrderNo" expression="@gateway.exchange(#root).payload"/>
</int:header-enricher>
当有效负载为null时,我将获得异常
java.lang.IllegalArgume
我使用的是spring集成,当服务器空闲一段时间时,我会遇到以下异常。我无法复制以下例外情况
Caused by: javax.mail.FolderClosedException: * BYE JavaMail Exception: java.net.SocketException: Connection timed out
at com.sun.mail.imap.IMAPFolder.handleIdle(IMAPFolder.java:3199)
at com.sun.m
使用Java配置如何启动/停止入站通道适配器,我尝试使用控制总线,但没有成功,请提供一个Java配置示例。@InboundChannelAdapter使用基于模式[configurationComponentName]的名称填充SourcePollingChannelAdapterbean。[methodName].[decapitalizedAnnotationClassShortName]。例如:
@Configuration
@EnableIntegration
public class
我的传入邮件适配器具有以下配置。当应用程序在单个服务器上运行时,一切都正常工作。但是,当我将应用程序部署到一个负载平衡的服务器上,侦听同一个邮箱时,邮件将在所有服务器中读取。
如何处理这种情况?是否有任何特定的配置来处理此类场景
<int-mail:imap-idle-channel-adapter
id="customAdapter"
store-uri="${mail.protocol}://${mail.username}:${mail.password}@${mai
有没有办法连接SFTP入站通道适配器以使用S3支持的存储而不是本地文件系统?我认为您需要看看不同的解决方案-SftpStreamingMessageSource:
/**
* A message source that produces a message with an {@link InputStream} payload
* referencing a remote file.
*
*/
public abstract class AbstractRemoteFileStreami
我正在使用spring集成使用来自wmq的消息,但我无法在消息头中获取JMS目的地。我想知道从何处使用消息的队列名称。在activemq中,我们将获得一个名为JMS Destination的参数,其中队列名称可用。是否可以使用spring集成消息从wmq中查找队列名称。在spring集成中,JMSDestination映射到名为jms\u destination(JmsHeaders.destination)的头
看
默认映射器是DefaultJmsHeaderMapper,而来自活动Mq JM
我有一个spring集成流,它生成消息,这些消息应该一直保存,等待合适的消费者出现并使用它们
@Bean
public IntegrationFlow messagesPerCustomerFlow() {
return IntegrationFlows.
from(WebFlux.inboundChannelAdapter("/messages/{customer}")
.requestMapping(r -> r
我正在执行一项任务,要求在读取请求消息通道(Queuechannel)中的消息后,向外部soap服务客户端发送请求,原始源为ibm mq
消息通道使用消息驱动适配器从ibm mq获取数据。
消息通道由轮询器进行轮询(通过maxmessagesperchannel合并soap服务供应商要求的节流),该轮询器将这些消息发送到我的服务激活器。
Serviceactivator(soap客户端)依次连接到soap服务,并在根据消息中的头值进行一些逻辑处理后返回响应。
当我收到某些错误代码时,我需要重新处
我们的集成依赖于spring集成,我们的一些客户会向我们发送EDI消息(EDIFact或AX12),想知道spring集成是否会提供标准的EDI转换器供我们使用
我们的集成需要两种变压器
EDI到XML
XML到EDI
请看这里:。看起来大多数通过EDI的解决方案都是商业化的。所以,不,我们不会在Spring集成中提供现成的转换器,因为我们不能依赖非开源库。但是您选择了一个库,并在SpringIntegration中从自定义转换器中使用它。也许简单的POJO方法调用就足够了
我有IntegrationFlow,其中我调用HTTP端点:
@Bean
public IntegrationFlow getInformationFlow(RestTemplate restTemplate) {
return IntegrationFlows.from(GET_RESPONSE_ENTITY)
.handle(Http
.outboundGateway(url + "/application/{
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 47 页