diff --git a/java-mvn/README.md b/java-mvn/README.md
new file mode 100644
index 00000000..ff628e56
--- /dev/null
+++ b/java-mvn/README.md
@@ -0,0 +1,5 @@
+Running an example using `mvn` and enabling debug logging:
+
+```
+mvn -e exec:java -Dorg.slf4j.simpleLogger.defaultLogLevel=debug -Dexec.mainClass=RecvWithConnectionRecovery
+```
diff --git a/java-mvn/pom.xml b/java-mvn/pom.xml
index 6cbdcd97..b91f9500 100644
--- a/java-mvn/pom.xml
+++ b/java-mvn/pom.xml
@@ -20,7 +20,17 @@
com.rabbitmq
amqp-client
- LATEST
+ 5.1.2
+
+
+ org.slf4j
+ slf4j-api
+ 1.7.25
+
+
+ org.slf4j
+ slf4j-simple
+ 1.7.25
diff --git a/java-mvn/src/main/java/RecvWithConnectionRecovery.java b/java-mvn/src/main/java/RecvWithConnectionRecovery.java
new file mode 120000
index 00000000..cfbef9b3
--- /dev/null
+++ b/java-mvn/src/main/java/RecvWithConnectionRecovery.java
@@ -0,0 +1 @@
+../../../../java/RecvWithConnectionRecovery.java
\ No newline at end of file
diff --git a/java-mvn/src/main/java/SendWithConnectionRecovery.java b/java-mvn/src/main/java/SendWithConnectionRecovery.java
new file mode 120000
index 00000000..93ad6e98
--- /dev/null
+++ b/java-mvn/src/main/java/SendWithConnectionRecovery.java
@@ -0,0 +1 @@
+../../../../java/SendWithConnectionRecovery.java
\ No newline at end of file
diff --git a/java/RecvWithConnectionRecovery.java b/java/RecvWithConnectionRecovery.java
new file mode 100644
index 00000000..fa884bcd
--- /dev/null
+++ b/java/RecvWithConnectionRecovery.java
@@ -0,0 +1,50 @@
+import com.rabbitmq.client.Address;
+import com.rabbitmq.client.Channel;
+import com.rabbitmq.client.Connection;
+import com.rabbitmq.client.ConnectionFactory;
+import com.rabbitmq.client.Consumer;
+import com.rabbitmq.client.DefaultConsumer;
+import com.rabbitmq.client.Envelope;
+import com.rabbitmq.client.AMQP.BasicProperties;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+
+public class RecvWithConnectionRecovery {
+
+ private static final Logger log = LoggerFactory.getLogger(RecvWithConnectionRecovery.class);
+ private static final String QUEUE_NAME = "hello";
+
+ public static void main(String[] argv) throws Exception {
+ final Address[] addresses = new Address[]{
+ new Address("localhost", 5672),
+ new Address("localhost", 5673)
+ };
+
+ log.debug("Initializing ConnectionFactory");
+ final ConnectionFactory factory = new ConnectionFactory();
+ factory.setAutomaticRecoveryEnabled(true);
+ factory.setTopologyRecoveryEnabled(true);
+
+ log.debug("Creating Connection");
+ final Connection connection = factory.newConnection(addresses);
+
+ log.debug("Creating Channel");
+ final Channel channel = connection.createChannel();
+
+ channel.queueDeclare(QUEUE_NAME, false, false, false, null);
+ log.info(" [*] Waiting for messages. To exit press CTRL+C");
+
+ Consumer consumer = new DefaultConsumer(channel) {
+ @Override
+ public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties, byte[] body)
+ throws IOException {
+ String message = new String(body, "UTF-8");
+ System.out.println(" [x] Received '" + message + "'");
+ }
+ };
+ channel.basicConsume(QUEUE_NAME, true, consumer);
+ }
+}
diff --git a/java/SendWithConnectionRecovery.java b/java/SendWithConnectionRecovery.java
new file mode 100644
index 00000000..cb4e59d4
--- /dev/null
+++ b/java/SendWithConnectionRecovery.java
@@ -0,0 +1,28 @@
+import com.rabbitmq.client.Address;
+import com.rabbitmq.client.Channel;
+import com.rabbitmq.client.Connection;
+import com.rabbitmq.client.ConnectionFactory;
+
+public class SendWithConnectionRecovery {
+
+ private final static String QUEUE_NAME = "hello";
+
+ public static void main(String[] argv) throws Exception {
+ Address[] addresses = new Address[]{
+ new Address("localhost", 5672),
+ new Address("localhost", 5673)
+ };
+ ConnectionFactory factory = new ConnectionFactory();
+ factory.setAutomaticRecoveryEnabled(true);
+ Connection connection = factory.newConnection(addresses);
+ Channel channel = connection.createChannel();
+
+ channel.queueDeclare(QUEUE_NAME, false, false, false, null);
+ String message = "Hello World!";
+ channel.basicPublish("", QUEUE_NAME, null, message.getBytes("UTF-8"));
+ System.out.println(" [x] Sent '" + message + "'");
+
+ channel.close();
+ connection.close();
+ }
+}
diff --git a/python/.gitignore b/python/.gitignore
new file mode 100644
index 00000000..cdb93cd5
--- /dev/null
+++ b/python/.gitignore
@@ -0,0 +1 @@
+.python-version