为什么basicReject不适用于Apache Qpid?

时间:2019-09-10 14:52:51

标签: spring kotlin rabbitmq amqp qpid

我正在使用qpid-broker进行集成测试,我的spring-boot-start-amqp应用程序使用basicGet(autoAck = false),basicAckbasicReject处理消息。 basicReject(带有requeue = false)可以在我的外部rabbitmq实例上正常使用,但不能与qpid-broker一起使用。

我已经使用外部RabbitMQ实例测试了我的代码,该实例一切正常,但是对于嵌入式Apache Qpid服务器,测试失败,因为basicReject无法正常工作。

获取消息并拒绝它:

rabbitTemplate.execute {
    val response = it.basicGet(config.queueName, false)
    it.basicReject(response.envelope.deliveryTag, false)
}

检查消息是否仍在队列中

rabbitTemplate.execute {
    val response = it.basicGet(config.queueName, false)
    Assertions.assertThat(response).isNull()
}

我的Qpid配置:

{
  "name": "EmbeddedBroker",
  "modelVersion": "7.0",
  "authenticationproviders": [
    {
      "name": "password",
      "type": "Plain",
      "secureOnlyMechanisms": [],
      "users": [
        {
          "name": "guest",
          "password": "guest",
          "type": "managed"
        }
      ]
    }
  ],
  "ports": [
    {
      "name": "AMQP",
      "port": "${qpid.amqp_port}",
      "protocols": [ "AMQP_0_9_1" ],
      "authenticationProvider": "password",
      "virtualhostaliases": [
        {
          "name": "defaultAlias",
          "type": "defaultAlias"
        }
      ]
    }
  ],
  "virtualhostnodes": [
    {
      "name": "default",
      "defaultVirtualHostNode": "true",
      "type": "Memory",
      "virtualHostInitialConfiguration": "{\"type\": \"Memory\" }"
    }
  ]
}

为什么basicReject可以在RabbitMQ实例上正常工作,但不能与Apache Qpid嵌入式代理正常工作?

编辑:我的解决方案是离开qpid并使用RabbitMQ Testcontainer

0 个答案:

没有答案