package core.framework.test.queue;
import com.rabbitmq.client.AMQP;
import core.framework.impl.queue.RabbitMQ;
import core.framework.impl.queue.RabbitMQConsumer;
import java.util.Map;
import java.util.Queue;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentLinkedQueue;
/**
* @author neo
*/
public class MockRabbitMQ implements RabbitMQ {
private final Map<String, Queue<byte[]>> publishedMessages = new ConcurrentHashMap<>();
@Override
public void publish(String exchange, String routingKey, byte[] message, AMQP.BasicProperties properties) {
Queue<byte[]> queue = publishedMessages.computeIfAbsent(exchange + ":" + routingKey, key -> new ConcurrentLinkedQueue<>());
queue.add(message);
}
@Override
public RabbitMQConsumer consumer(String queue, int prefetchCount) {
throw new Error("not supported");
}
public Queue<byte[]> publishedMessages(String exchange, String routingKey) {
return publishedMessages.remove(exchange + ":" + routingKey);
}
}