使用Boot 2.2.2和Integration 5.2.2——当一条XML消息源于文件
且未能解组(即,它不是XML)时,消息将按预期的方式进行错误通道
。但是,当消息来自JMS时,通过相同的通道路由,并且无法解组,它不会被路由到errorChannel
,消息会回滚到JMS。在这之后,我陷入了一个没完没了的SAXParseException
循环,只为同一条消息。
我从正确的终极方式迁移JMS事件到Spring与Spring Boot的集成,遵循了这个例子。是否有一些我没有考虑的隐含交易控制?如何让Spring Integration将消息转发到errorChannel
,并从传入队列提交“get”?
代码概要如下;
@Bean
public IntegrationFlow fileReader() {
return IntegrationFlows
.from(
Files
.inboundAdapter( ... )
...
.get(), e -> e.poller(Pollers.fixedDelay(1000))
)
.transform(new FileToStringTransformer())
.channel("backUpChannel")
.get();
}
@Bean
public IntegrationFlow getMessageFromJms(ConnectionFactory connectionFactory, @Value("${queues.myQueue}") String myQueue) {
return IntegrationFlows.from(
Jms
.messageDrivenChannelAdapter(connectionFactory)
.destination(myQueue)
)
.channel("backUpChannel")
.get();
}
@Bean
public IntegrationFlow doBackUp() {
return IntegrationFlows
.from("backUpChannel")
.<String>handle((payload, headers) -> {
String uuid = headers.get(MessageHeaders.ID).toString();
File backUpFile = new File("c:/backup/" + uuid + ".txt");
byte[] payloadContent = payload.getBytes();
try {
java.nio.file.Files.write(backUpFile.toPath(), payloadContent);
} catch (IOException e) {
e.printStackTrace();
}
return payload;
})
.channel("XXX")
.get();
}
@Bean
public Jaxb2Marshaller unmarshaller() {
Jaxb2Marshaller unmarshaller = new Jaxb2Marshaller();
unmarshaller.setClassesToBeBound(MyClass.class);
return unmarshaller;
}
@Bean
public IntegrationFlow handleParseXml() {
return IntegrationFlows
.from("XXX")
.transform(new UnmarshallingTransformer(unmarshaller()))
.channel("YYY")
.get();
}
您需要将. errorChannel(...)
添加到消息驱动的通道适配器。
我正在通过绑定到不同Webshpere MQ的入站和出站原子和JMS使用带有JTA支持的Spring集成。流程如下: JMS入站通道适配器收到消息 一些转变 输出队列的JMS出站通道适配器 发生错误时,收到消息 异常类型路由器将未处理的错误路由到自定义重新抛出服务,并将处理的错误路由到接收者列表路由器,该路由器将它们发送到2个错误队列 我的问题是,即使消息到达errorChannel下游(在已处理
但我得到的错误如下: POM: 我按以下方式配置入站网关: 并且,服务激活器: 顺便说一句,只有当我在服务激活器中删除outputChannel="outputChannel"时,它才有效。 这个问题有什么解释吗,我有什么误解吗?
我目前在Spring集成中处理JMS事务时遇到困难。我正在创建的集成流程如下所示: JMS队列A- 我希望在JMS队列B和JMS队列C上保证消息的传递。然而,为了使传递稍微困难一些,我希望将导致错误的消息存储在单独的JMQ队列上,并在队列a上确认消息。 但是,如果我对此进行测试并在队列C上设置消息之前抛出错误(让我们假设队列B首先完成,队列C其次完成),事务将确认队列A并在队列B和错误队列上提交消
问题内容: 我的代码只是刮取一个网页,然后将其转换为。 但是我得到了: 我认为这意味着HTML在某处包含一些错误的Unicode尝试。我能丢掉导致问题的任何代码字节而不出错吗? 问题答案: 使用类似的压缩已变得非常流行(约73%的网站都在使用它,包括和网站等大型网站)。 如果你像原始答案中那样使用压缩响应进行简单解码,则会收到类似以下错误: 编解码器无法解码位置1的字节0x8b 为了解码gzpip
问题是所有的字体文件都显示出如下所示的各种错误
我不知道如何制作一个可复制的例子,但我很想知道是否还有其他人遇到过这个问题。我在运行Ubuntu的EC2实例上有一个R Markdown文件,该文件通过shinny服务器托管。几天来一切正常,现在当我尝试在浏览器中查看文档时,突然出现以下错误: 我没有转换为pdf,也没有推送任何更改,几个小时前它还在工作。我在网上找不到关于这个错误代码的任何信息,所以我不知道如何调试这个问题。以前有人发生过这种情