Exam >
On this page

MqPlugin

Configures a message queue connections and other options of e:mq-... commands

Overview

Usage

In basic configuration MqPlugin accepts a map of a queue alias name to a MqTester implementation. Queue alias should be used as queue logical name in name attribute of e:mq-... commands:

<e:mq-send name="someRabbitQueue" from="/data/message.json"/> 

src/test/java/specs/Specs.java
public class Specs extends AbstractSpecs {
    @Override
    protected ExamExtension init() {
        return new ExamExtension(
            new MqPlugin(
                Map.of(
                    "someRabbitQueue", new RabbitTester(
                            5432,
                            new RabbitTester.SendConfig("someRoutingKey"),
                            new RabbitTester.ReceiveConfig("someQueueName")
                    ),
                    "dummyQueue", new MqTester() {
                        private final ArrayDeque<MqTester.Message> queue = new ArrayDeque<>();

                        @Override
                        public void start() {/* open connection*/}

                        @Override
                        public void stop() {/* close connection*/}

                        @Override
                        public void send(MqTester.Message message, Map<String, String>  params) {
                            queue.add(message);
                        }

                        @Override
                        public List<Message> receive() {
                            return queue.stream().map(m -> queue.poll()).collect(Collectors.toList());
                        }

                        @Override
                        public void purge() { queue.clear(); }

                        @Override
                        public boolean accumulateOnRetries() { return true; }
                    }
                )
            )
        );
    }
}