diff --git a/oslo/messaging/notify/_impl_routing.py b/oslo/messaging/notify/_impl_routing.py
index f9d6dceca..15f989c58 100644
--- a/oslo/messaging/notify/_impl_routing.py
+++ b/oslo/messaging/notify/_impl_routing.py
@@ -104,33 +104,31 @@ class RoutingDriver(notifier._Driver):
 
         return list(accepted_drivers)
 
-    def _filter_func(self, ext, context, message, accepted_drivers):
+    def _filter_func(self, ext, context, message, priority, accepted_drivers):
         """True/False if the driver should be called for this message.
         """
         # context is unused here, but passed in by map()
         return ext.name in accepted_drivers
 
-    def _call_notify(self, ext, context, message, accepted_drivers):
+    def _call_notify(self, ext, context, message, priority, accepted_drivers):
         """Emit the notification.
         """
         # accepted_drivers is passed in as a result of the map() function
         LOG.info(_("Routing '%(event)s' notification to '%(driver)s' driver") %
                  {'event': message.get('event_type'), 'driver': ext.name})
-        ext.obj.notify(context, message)
+        ext.obj.notify(context, message, priority)
 
-    def notify(self, context, message):
+    def notify(self, context, message, priority):
         if not self.plugin_manager:
             self._load_notifiers()
 
         # Fail if these aren't present ...
         event_type = message['event_type']
-        priority = message['priority'].lower()
 
         accepted_drivers = set()
         for group in self.routing_groups.values():
-            accepted_drivers.update(self._get_drivers_for_message(group,
-                                                                  event_type,
-                                                                  priority))
-
+            accepted_drivers.update(
+                self._get_drivers_for_message(group, event_type,
+                                              priority.lower()))
         self.plugin_manager.map(self._filter_func, self._call_notify, context,
-                                message, list(accepted_drivers))
+                                message, priority, list(accepted_drivers))
diff --git a/tests/test_notifier.py b/tests/test_notifier.py
index 802211247..4947d036b 100644
--- a/tests/test_notifier.py
+++ b/tests/test_notifier.py
@@ -13,6 +13,7 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+import contextlib
 import datetime
 import logging
 import sys
@@ -20,6 +21,7 @@ import uuid
 
 import fixtures
 import mock
+from stevedore import dispatch
 from stevedore import extension
 import testscenarios
 import yaml
@@ -27,7 +29,6 @@ import yaml
 from oslo import messaging
 from oslo.messaging.notify import _impl_log
 from oslo.messaging.notify import _impl_messaging
-from oslo.messaging.notify import _impl_routing as routing
 from oslo.messaging.notify import _impl_test
 from oslo.messaging.notify import notifier as msg_notifier
 from oslo.messaging.openstack.common import jsonutils
@@ -304,7 +305,11 @@ class TestLogNotifier(test_utils.BaseTestCase):
 class TestRoutingNotifier(test_utils.BaseTestCase):
     def setUp(self):
         super(TestRoutingNotifier, self).setUp()
-        self.router = routing.RoutingDriver(None, None, None)
+        self.config(notification_driver=['routing'])
+
+        transport = _FakeTransport(self.conf)
+        self.notifier = messaging.Notifier(transport)
+        self.router = self.notifier._driver_mgr['routing'].obj
 
     def _fake_extension_manager(self, ext):
         return extension.ExtensionManager.make_test_instance(
@@ -380,22 +385,22 @@ group_1:
         # No matching event ...
         self.assertEqual([],
                          self.router._get_drivers_for_message(
-                             group, "unknown", None))
+                             group, "unknown", "info"))
 
         # Child of foo ...
         self.assertEqual(['rpc'],
                          self.router._get_drivers_for_message(
-                             group, "foo.1", None))
+                             group, "foo.1", "info"))
 
         # Foo itself ...
         self.assertEqual([],
                          self.router._get_drivers_for_message(
-                             group, "foo", None))
+                             group, "foo", "info"))
 
         # Child of blah.zoo
         self.assertEqual(['rpc'],
                          self.router._get_drivers_for_message(
-                             group, "blah.zoo.zing", None))
+                             group, "blah.zoo.zing", "info"))
 
     def test_get_drivers_for_message_accepted_priorities(self):
         config = r"""
@@ -461,21 +466,58 @@ group_1:
         ext.name = "rpc"
 
         # Good ...
-        self.assertTrue(self.router._filter_func(ext, {}, {},
+        self.assertTrue(self.router._filter_func(ext, {}, {}, 'info',
                         ['foo', 'rpc']))
 
         # Bad
-        self.assertFalse(self.router._filter_func(ext, {}, {}, ['foo']))
+        self.assertFalse(self.router._filter_func(ext, {}, {}, 'info',
+                                                  ['foo']))
 
     def test_notify(self):
         self.router.routing_groups = {'group_1': None, 'group_2': None}
-        message = {'event_type': 'my_event', 'priority': 'my_priority'}
-
         drivers_mock = mock.MagicMock()
         drivers_mock.side_effect = [['rpc'], ['foo']]
 
         with mock.patch.object(self.router, 'plugin_manager') as pm:
             with mock.patch.object(self.router, '_get_drivers_for_message',
                                    drivers_mock):
-                self.router.notify({}, message)
-                self.assertEqual(['rpc', 'foo'], pm.map.call_args[0][4])
+                self.notifier.info({}, 'my_event', {})
+                self.assertEqual(['rpc', 'foo'], pm.map.call_args[0][5])
+
+    def test_notify_filtered(self):
+        self.config(routing_notifier_config="routing_notifier.yaml")
+        routing_config = r"""
+group_1:
+    rpc:
+        accepted_events:
+          - my_event
+    rpc2:
+        accepted_priorities:
+          - info
+    bar:
+        accepted_events:
+            - nothing
+        """
+        config_file = mock.MagicMock()
+        config_file.return_value = routing_config
+
+        rpc_driver = mock.Mock()
+        rpc2_driver = mock.Mock()
+        bar_driver = mock.Mock()
+
+        pm = dispatch.DispatchExtensionManager.make_test_instance(
+            [extension.Extension('rpc', None, None, rpc_driver),
+             extension.Extension('rpc2', None, None, rpc2_driver),
+             extension.Extension('bar', None, None, bar_driver)],
+        )
+
+        with contextlib.nested(
+            mock.patch.object(self.router, '_get_notifier_config_file',
+                              config_file),
+            mock.patch('stevedore.dispatch.DispatchExtensionManager',
+                       return_value=pm)):
+                self.notifier.info({}, 'my_event', {})
+                self.assertFalse(bar_driver.info.called)
+                rpc_driver.notify.assert_called_once_with({}, mock.ANY, 'INFO')
+                rpc2_driver.notify.assert_called_once_with(
+                    {}, mock.ANY, 'INFO')