Continuing with the previous answer, here is a very fast implementation for the unit test route (using Mockito). The starting point is one of RabbitMQ's own lessons for java.
Receiver class (message handler)
public class LocalConsumer extends DefaultConsumer { private Channel channel; private Logger log; // manual dependency injection public LocalConsumer(Channel channel, Logger logger) { super(channel); this.log = logger; } @Override public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { String message = new String(body, "UTF-8"); // insert here whatever logic is needed, using whatever service you injected - in this case it is a simple logger. log.print(" [x] Received and processed '" + message + "'"); } }
Testing class
public class LocalConsumerTest { Logger mockLogger = mock(Logger.class); Channel mockChannel = mock(Channel.class); String mockConsumerTag = "mockConsumerTag"; LocalConsumer _sut = new LocalConsumer(mockChannel, mockLogger); @Test public void shouldPrintOutTheMessage () throws java.io.IOException {
Consumer
Andrea C
source share