scala - 处理 apache-camel 中的连接失败

标签 scala apache-camel akka

我正在编写一个 apache-camel RabbitMQ 消费者。我想以某种方式对连接问题使用react(即尝试重新连接)。是否可以将 apache-camel 配置为自动重新连接?

如果没有,我怎样才能发现与队列的连接被中断了?我做了以下测试:

  • 启动队列(和一些生产者)
  • 启动我的消费者(它按预期收到消息)
  • 停止队列(消息停止到达,正如预期的那样,但没有抛出异常)
  • 启动队列(没有收到新消息)

  • 我在 Scala 中使用 Camel (通过 akka-camel),但 Java 解决方案可能也可以

    最佳答案

    对于发生故障时的自动 RabbitMQ 资源恢复(Connections/Channels/Consumers/Queues/Exchanages/Bindings),请查看 Lyra 。用法示例:

    Config config = new Config()
      .withRecoveryPolicy(new RecoveryPolicy()
        .withMaxAttempts(20)
        .withInterval(Duration.seconds(1))
        .withMaxDuration(Duration.minutes(5)));
    ConnectionOptions options = new ConnectionOptions().withHost("localhost");
    Connection connection = Connections.create(options, config);
    

    API 的其余部分只是 amqp-client API,除了您的资源在发生故障时自动恢复。

    我不确定camel-rabbitmq 的具体情况,但希望有一种方法可以通过Lyra 交换您自己的资源创建。

    关于scala - 处理 apache-camel 中的连接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23134462/

    相关文章:

    scala - Scala:参数化类型只是语法糖(如Odersky所建议)吗?

    mysql - 在 Scala 中,当进行巧妙的 sortBy 时,如何让它进行区分大小写的排序

    java - Apache Camel MultiCasting - InvalidPayloadException

    java - Apache Camel(这里使用哪个 EIP?)聚合/丰富具有重复 header 数据的所有行

    scala - 如何声明对 native .so 库的依赖以进行测试?

    scala - 如何为scala子类型实现流畅的接口(interface)?

    Scala Akka Streams 项目无法编译, "value ~> is not a member of akka.streams.Outlet[In]"

    java - 使用camel蓝图连接到activeMQ

    scala - 创建 akka 系统,其中所有参与者都相互引用

    eclipse - Akka源码学习