0

在应用程序开始时,我正在创建以下通道和相关队列

@Singleton
public class ChannelPoolListener extends ChannelInitializer {

    @Override
    public void initialize(Channel channel) throws IOException {
        channel.exchangeDeclare("micronaut", BuiltinExchangeType.DIRECT, true); 

        channel.queueDeclare("inventory", true, false, false, null); 
        channel.queueBind("inventory", "micronaut", "books.inventory"); 

        channel.queueDeclare("catalogue", true, false, false, null); 
        channel.queueBind("catalogue", "micronaut", "books.catalogue"); 
    }
}

我想编写 JUnit 5 测试来检查队列是否已创建并使用 rabbitMq 测试容器绑定到交换。

从 RabbitMq java API,我知道我们有一个用于通道的方法。但不确定如何在 JUnit 5 中注入 Channel

GetResponse response = rabbitChannel.basicGet(QUEUE_NAME, BOOLEAN_NOACK);
4

2 回答 2

0

任何寻找这种结果的人

@BeforeAll
    @DisplayName("Initial setup")
    void initialSetup() {
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");
        try (Connection connection = factory.newConnection();
             Channel channel = connection.createChannel()) {
            new ChannelPoolListener().initialize(channel);
            AMQP.Queue.DeclareOk response = channel.queueDeclarePassive("Hello world");
            Assertions.assertTrue(application.isRunning());
        } catch (IOException e) {
            e.printStackTrace();
        } catch (TimeoutException e) {
            e.printStackTrace();
        }
    }
于 2021-08-23T09:51:14.363 回答
0

只需通过 Micronaut 注释或 java 客户端 API 直接将队列与测试客户端/订阅者一起使用。

于 2021-08-16T17:14:38.153 回答