diff --git a/manifests/init.pp b/manifests/init.pp
index d84bd5ad..175adcb9 100644
--- a/manifests/init.pp
+++ b/manifests/init.pp
@@ -52,6 +52,16 @@
 #   every 30 seconds.
 #   Defaults to $::os_service_default
 #
+# [*rabbit_heartbeat_in_pthread*]
+#   (Optional) EXPERIMENTAL: Run the health check heartbeat thread
+#   through a native python thread. By default if this
+#   option isn't provided the  health check heartbeat will
+#   inherit the execution model from the parent process. By
+#   example if the parent process have monkey patched the
+#   stdlib by using eventlet/greenlet then the heartbeat
+#   will be run through a green thread.
+#   Defaults to $::os_service_default
+#
 # [*kombu_ssl_ca_certs*]
 #   (optional) SSL certification authority file (valid only if SSL enabled).
 #   Defaults to $::os_service_default
@@ -216,6 +226,7 @@ class aodh (
   $rabbit_use_ssl                     = $::os_service_default,
   $rabbit_heartbeat_timeout_threshold = $::os_service_default,
   $rabbit_heartbeat_rate              = $::os_service_default,
+  $rabbit_heartbeat_in_pthread        = $::os_service_default,
   $rabbit_ha_queues                   = $::os_service_default,
   $kombu_ssl_ca_certs                 = $::os_service_default,
   $kombu_ssl_certfile                 = $::os_service_default,
@@ -272,6 +283,7 @@ class aodh (
     rabbit_ha_queues            => $rabbit_ha_queues,
     heartbeat_timeout_threshold => $rabbit_heartbeat_timeout_threshold,
     heartbeat_rate              => $rabbit_heartbeat_rate,
+    heartbeat_in_pthread        => $rabbit_heartbeat_in_pthread,
     rabbit_use_ssl              => $rabbit_use_ssl,
     kombu_reconnect_delay       => $kombu_reconnect_delay,
     kombu_failover_strategy     => $kombu_failover_strategy,
diff --git a/releasenotes/notes/rabbitmq-heartbeat-over-pthread-8067e160b9d667bf.yaml b/releasenotes/notes/rabbitmq-heartbeat-over-pthread-8067e160b9d667bf.yaml
new file mode 100644
index 00000000..496d2279
--- /dev/null
+++ b/releasenotes/notes/rabbitmq-heartbeat-over-pthread-8067e160b9d667bf.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    Allow users to run the RabbitMQ heartbeat over a native python thread in the
+    oslo.messaging RabbitMQ driver, by using the `rabbit_heartbeat_in_pthread`
+    option in configuration.
diff --git a/spec/classes/aodh_init_spec.rb b/spec/classes/aodh_init_spec.rb
index c553bdc9..953382f5 100644
--- a/spec/classes/aodh_init_spec.rb
+++ b/spec/classes/aodh_init_spec.rb
@@ -26,6 +26,7 @@ describe 'aodh' do
         is_expected.to contain_aodh_config('DEFAULT/control_exchange').with_value('<SERVICE DEFAULT>')
         is_expected.to contain_aodh_config('oslo_messaging_rabbit/heartbeat_timeout_threshold').with_value('<SERVICE DEFAULT>')
         is_expected.to contain_aodh_config('oslo_messaging_rabbit/heartbeat_rate').with_value('<SERVICE DEFAULT>')
+        is_expected.to contain_aodh_config('oslo_messaging_rabbit/heartbeat_in_pthread').with_value('<SERVICE DEFAULT>')
         is_expected.to contain_aodh_config('oslo_messaging_rabbit/kombu_compression').with_value('<SERVICE DEFAULT>')
         is_expected.to contain_aodh_config('oslo_messaging_notifications/transport_url').with_value('<SERVICE DEFAULT>')
         is_expected.to contain_aodh_config('oslo_messaging_notifications/driver').with_value('<SERVICE DEFAULT>')
@@ -47,6 +48,7 @@ describe 'aodh' do
           :rabbit_ha_queues                   => 'undef',
           :rabbit_heartbeat_timeout_threshold => '60',
           :rabbit_heartbeat_rate              => '10',
+          :rabbit_heartbeat_in_pthread        => true,
           :kombu_compression                  => 'gzip',
           :package_ensure                     => '2012.1.1-15.el6',
           :notification_transport_url         => 'rabbit://rabbit_user:password@localhost:5673',
@@ -60,6 +62,7 @@ describe 'aodh' do
         is_expected.to contain_aodh_config('DEFAULT/transport_url').with_value('rabbit://rabbit_user:password@localhost:5673')
         is_expected.to contain_aodh_config('oslo_messaging_rabbit/heartbeat_timeout_threshold').with_value('60')
         is_expected.to contain_aodh_config('oslo_messaging_rabbit/heartbeat_rate').with_value('10')
+        is_expected.to contain_aodh_config('oslo_messaging_rabbit/heartbeat_in_pthread').with_value(true)
         is_expected.to contain_aodh_config('oslo_messaging_rabbit/kombu_compression').with_value('gzip')
         is_expected.to contain_aodh_config('database/alarm_history_time_to_live').with_value('604800')
       end