rabbitmq Seneca amqp传输的死信交换x消息ttl

7kqas0il  于 2022-11-23  发布在  RabbitMQ
关注(0)|答案(1)|浏览(209)

我正在更新seneca-amqp-transport npm包从2.1.0到2.2.0。
启动seneca.js微服务时出现以下错误。

  • {"消息":"通道关闭","堆栈状态更改":"堆栈捕获:服务器关闭的通道:406(预处理失败),消息为"预处理失败-vhost "/"中队列" seneca. add. role:worker. cmd:any "的参数" x-message-ttl "不等效:在Channel.C.accept... * 收到类型为'signedint'的值'60000',但目前的值是类型为'signedint'的值'360000'"\n

我对这条消息的理解是,x-message-ttl值与我们在代码和rabbitmq队列中设置的值不同。我检查了rabbitmq队列,x-message-ttl时间为360000。在代码中也检查了x-message-ttl时间为360000。

{
          queues: {
            prefix: "seneca.add",
            separator: ".",
            options: {
              durable: true,
              arguments: {
                "x-dead-letter-exchange": "seneca.dlx",
                "x-message-ttl": 360000
              }
            }
          }
        }

我检查了更改日志,但没有得到什么得到了改变,由于我得到这个错误。

tv6aics1

tv6aics11#

我已经找到了解决方案。在seneca-amqp-protocol版本2.2.0中,他们更新了配置选项。更新配置选项以
旧配置

{amqp: {
    listen: {
      channel: {
        prefetch: 1
      },
      queues: {
        prefix: "seneca.add",
        separator: ".",
        options: {
          durable: true,
          arguments: {
            "x-dead-letter-exchange": "seneca.dlx",
            "x-message-ttl": 360000
          }
        }
      }
    }
  }}

新配置

{amqp: {
    listener: {
      channel: {
        prefetch: 1
      },
      queues: {
        prefix: "seneca.add",
        separator: ".",
        options: {
          durable: true,
          arguments: {
            "x-dead-letter-exchange": "seneca.dlx",
            "x-message-ttl": 360000
          }
        }
      }
    }
  }}

相关问题