diff --git a/proton-j/src/main/java/org/apache/qpid/proton/reactor/ReactorOptions.java b/proton-j/src/main/java/org/apache/qpid/proton/reactor/ReactorOptions.java
index 5863f7c..8957aa6 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/reactor/ReactorOptions.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/reactor/ReactorOptions.java
@@ -22,6 +22,7 @@
 
 public class ReactorOptions {
     private boolean enableSaslByDefault = true;
+    private int maxFrameSize;
 
     /**
      * Sets whether SASL will be automatically enabled with ANONYMOUS as the mechanism,
@@ -46,4 +47,23 @@
     public boolean isEnableSaslByDefault() {
         return this.enableSaslByDefault;
     }
+
+    /**
+     * Sets the maximum frame size value to announce in the Open frame.
+     *
+     * @param maxFrameSize The frame size in bytes.
+     */
+    public void setMaxFrameSize(int maxFrameSize) {
+        this.maxFrameSize = maxFrameSize;
+    }
+
+    /**
+     * Gets the maximum frame size to be announced in the Open frame.
+     *
+     * @return the frame size in bytes or 0 if none is set.
+     * @see #setMaxFrameSize(int)
+     */
+    public int getMaxFrameSize() {
+      return maxFrameSize;
+    }
 }
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/reactor/impl/AcceptorImpl.java b/proton-j/src/main/java/org/apache/qpid/proton/reactor/impl/AcceptorImpl.java
index 7275113..eec8e70 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/reactor/impl/AcceptorImpl.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/reactor/impl/AcceptorImpl.java
@@ -73,6 +73,12 @@
                     conn_recs.set(ReactorImpl.CONNECTION_PEER_ADDRESS_KEY, Address.class, addr);
                 }
                 Transport trans = Proton.transport();
+
+                int maxFrameSizeOption = reactor.getOptions().getMaxFrameSize();
+                if (maxFrameSizeOption != 0) {
+                    trans.setMaxFrameSize(maxFrameSizeOption);
+                }
+
                 if(reactor.getOptions().isEnableSaslByDefault()) {
                     Sasl sasl = trans.sasl();
                     sasl.server();
diff --git a/proton-j/src/main/java/org/apache/qpid/proton/reactor/impl/IOHandler.java b/proton-j/src/main/java/org/apache/qpid/proton/reactor/impl/IOHandler.java
index 0594d32..81b85ff 100644
--- a/proton-j/src/main/java/org/apache/qpid/proton/reactor/impl/IOHandler.java
+++ b/proton-j/src/main/java/org/apache/qpid/proton/reactor/impl/IOHandler.java
@@ -101,6 +101,11 @@
         }
         Transport transport = Proton.transport();
 
+        int maxFrameSizeOption = reactor.getOptions().getMaxFrameSize();
+        if (maxFrameSizeOption != 0) {
+            transport.setMaxFrameSize(maxFrameSizeOption);
+        }
+
         if (reactor.getOptions().isEnableSaslByDefault()) {
             Sasl sasl = transport.sasl();
             sasl.client();
