【问题标题】:RabbitMQ throw exception when send to dql (max frame_size)RabbitMQ 发送到 dql 时抛出异常(最大 frame_size)
【发布时间】:2022-01-02 08:05:14
【问题描述】:

当我从队列中获取消息并且如果抛出异常,我想再次获取消息。 所以,我用 dql 队列创建了我的消费者:

spring:
  cloud:
    stream:
      bindings:
        to-send-output:
          destination: to-send-event
          producer:
            required-groups:
              - to-send-event-group
        to-send-input:
          destination: to-send-event
          group: to-send-event-group
          consumer:
            max-attempts: 1
            requeueRejected: true
      rabbit:
        bindings:
          #forever retry
          to-send-input:
            consumer:
              autoBindDlq: true
              dlqTtl: 5000
              dlqDeadLetterExchange:
              maxConcurrency: 300
              frameMaxHeadroom: 25000 #added this as in documentation

我按照documentation 中的说明添加了属性frameMaxHeadroom: 25000,但它仍然无法正常工作。

我的springCloudVersion="Hoxton.RELEASE"

我的依赖:

dependencies {
...
    implementation "org.springframework.cloud:spring-cloud-starter-stream-rabbit"
...
}

github 的存储库中,我在属性文件中看到frameMaxHeadroom 属性。

UPD:我看到code 将堆栈跟踪减少了我设置的值(来自变量frameMaxHeadroom)。我希望我不会减少堆栈跟踪,而是增加消费者标头的值,如文档中所述。为什么它在我等待时不起作用?

【问题讨论】:

标签: java spring rabbitmq spring-cloud spring-rabbit


【解决方案1】:

frameMax 在 amqp 客户端和服务器之间协商;所有标题必须适合一帧。您可以通过代理配置来增加它。

堆栈跟踪可能很大,很容易超过单独的frameMax;为了给其他标头留出空间,框架会为其他标头留出至少 20,000 个字节(默认情况下),必要时通过截断堆栈跟踪标头。

如果您超出了frameMax,则必须有其他大标题 - 您需要增加空间以允许这些标题,因此堆栈跟踪被进一步截断。

【讨论】:

  • 所以,我可以减少标题x-exception-stacktrace。而且我无法增加所有其他标题的空间。这是真的吗?
  • frame_max 由服务器决定 - 默认情况下客户端在协商时发送 0 - 这意味着协商的大小将是服务器上配置的最大大小。根据这个blog.rabbitmq.com/posts/2012/11/…(向下滚动到frame_max)默认为128kb,但可以在服务器上增加。
  • 我怎样才能增加它?
  • 我不知道 - 我在这里看不到 rabbitmq.com/configure.html#config-items,但它确实显示了 These variables are the most common. The list is not complete, as some settings are quite obscure. - 我建议你在他们的 rabbitmq-users Google 群组中询问 RabbitMQ 人员。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-11
  • 2013-05-24
  • 1970-01-01
  • 2019-06-14
  • 2013-01-05
  • 1970-01-01
相关资源
最近更新 更多