当前位置: 首页 > 知识库问答 >
问题:

Apache Camel:如何通过SEDAendpoint传输异常?

殷耀
2023-03-14
private final String internalRespUri = "direct:internal_resp";
private final String internalRespTimeout = "seda:internaltimeout";

@Override
public void configure() {
    SendController send_controller = new SendController();
    TimeoutResponse resp = new TimeoutResponse();

    from(Endpoints.MESSAGE_IN.direct())
                    .errorHandler(noErrorHandler())
                    .routeId(Endpoints.MESSAGE_IN.atsm())
                    .log("Incoming message at segment in")
                    .process(send_controller)
                    .log("Message after send controller")
                    .multicast().parallelProcessing()
                    .log("After wiretap")
                    .to(internalRespTimeout, Endpoints.SEGMENT_OUT.direct());
    from(internalRespTimeout)
                    .errorHandler(noErrorHandler())
                    .routeId(internalRespTimeout)
                    .log("begin response route")
                    .log("timeout response route")
                    .process(resp)
                    .log("modify message to response")
                    .delay(1000)
                    .log("after delay")
                    .to(internalRespUri);
    from(Endpoints.SEGMENT_IN.seda())
                    .routeId(Endpoints.SEGMENT_IN.atsm())
                    .to(internalRespUri);
    from(internalRespUri)
                    .errorHandler(noErrorHandler())
                    .routeId(internalRespUri)
                    .log("after response gathering point")
                    .choice()
                    .when(header(HeaderKeys.TYPE.key()).isEqualTo(UserMessageType.RESP.toString()))
                    .log("process responses")
                    .process(send_controller)
                    .otherwise()
                    .log("no response")
                    .to(Endpoints.MESSAGE_OUT.direct());
}

共有1个答案

薛弘壮
2023-03-14

我有个主意:

我可能会使用事务来超时,而不是引发异常。

这能行吗?

 类似资料:
  • 我正在尝试向异步路由发送消息,但它不起作用。我刚刚在github上创建了一个项目来模拟这个问题

  • 问题内容: 如何在Java中通过SFTP传输文件? 我想要SFTP客户端的示例代码。我想将SFTP服务器嵌入到我的应用程序中,并且客户端应该能够将文件发送到我的应用程序。 PS:这是要求SFTP客户端。这个问题不是其他两个问题的重复。 找到以下链接以实现SFTP。 https://codetransient.wordpress.com/2019/06/22/sftp-secured-file-tr

  • 问题内容: 我应该使用什么图书馆?有什么功能对我有帮助? 问题答案: 最简单的方法可能是使用序列化。因此,您的对象类必须实现可序列化,因此必须具有所有成员(primitves和大多数标准Java类已经做到了)。这允许在运行时在对象实例和字节流之间进行映射。 您还需要用于Transer的协议。如果您不想处理流传输中的字节流,可以看看RMI,尽管这并不困难。但是,使用RMI可以使您以后构建功能更强大的

  • 我试图移动一些文件从存储目录到远程服务器"BOB"使用jcifs SMB.我需要使用jcifs,因为移动通过和Android应用程序,即。我正在将照片从应用程序移动到远程服务器。为了验证为用户,我的公司使用Active Directory。有一段时间,Active Directory和照片所在的服务器是同一个服务器,一切都很好。不幸的是,他们不得不将存储Active Directory的服务器更改

  • 问题内容: 我在完全冻结JVM的应用程序中发现一个错误。产生的stacktrace将为开发人员提供有价值的信息,我想从Java控制台中检索它。JVM崩溃时,控制台被冻结,我无法再复制包含的文本。 是否可以将Java控制台直接通过管道传输到文件,或通过其他某种方式访问​​Java应用程序的控制台输出? 更新:我忘记提了,没有更改代码。我是手动测试仪。 更新2:这是在Windows XP下,它实际上是

  • 问题内容: 如何通过管道将os.Exec的stdout发送到文件,同时也发送到终端? 我已经试过了: 但是文件丢失了。如何让他们回来?也许管道有一些更优雅的解决方案? 问题答案: 使用参数os.Stdout和文件创建io.MultiWriter。将Cmd.Stdout设置为multiwriter。运行命令。 如果要逐行写入log.Debugf和其他文件,请执行以下操作: 此代码假定输入中的行分隔符