Add functionality to define different Message and Notification destination

Sometime,huge notification messages will effect the rabbitMQ cluster's
performance.This commit adds functionality do define different Message
and Notification destination.

Closes-Bug: #1734823
Change-Id: I2ef4d008c9ca91a03d8c7e1380e0188bf6792595
This commit is contained in:
wangjun 2017-12-05 09:40:53 +08:00 committed by j.wong
parent ccb6752f69
commit 1dcdf38bc2
5 changed files with 124 additions and 4 deletions

View File

@ -29,6 +29,34 @@ control_exchange = trove
[database] [database]
connection = mysql+pymysql://root:e1a2c042c828d3566d0a@localhost/trove connection = mysql+pymysql://root:e1a2c042c828d3566d0a@localhost/trove
[oslo_messaging_notifications]
#
# From oslo.messaging
#
# The Driver(s) to handle sending notifications. Possible
# values are messaging, messagingv2, routing, log, test, noop
# (multi valued)
# Deprecated group/name - [DEFAULT]/notification_driver
#driver =
# A URL representing the messaging driver to use for
# notifications. If not set, we fall back to the same
# configuration used for RPC. (string value)
# Deprecated group/name - [DEFAULT]/notification_transport_url
#transport_url = <None>
# AMQP topic used for OpenStack notifications. (list value)
# Deprecated group/name - [rpc_notifier2]/topics
# Deprecated group/name - [DEFAULT]/notification_topics
#topics = notifications
# The maximum number of attempts to re-send a notification
# message which failed to be delivered due to a recoverable
# error. 0 - No retry, -1 - indefinite (integer value)
#retry = -1
[oslo_messaging_rabbit] [oslo_messaging_rabbit]
# The RabbitMQ broker address where a single node is used. (string value) # The RabbitMQ broker address where a single node is used. (string value)
# Deprecated group/name - [DEFAULT]/rabbit_host # Deprecated group/name - [DEFAULT]/rabbit_host

View File

@ -82,6 +82,34 @@ log_config_append = /etc/trove/trove-logging-guestagent.conf
# If False doesn't trace SQL requests. # If False doesn't trace SQL requests.
#trace_sqlalchemy = True #trace_sqlalchemy = True
[oslo_messaging_notifications]
#
# From oslo.messaging
#
# The Driver(s) to handle sending notifications. Possible
# values are messaging, messagingv2, routing, log, test, noop
# (multi valued)
# Deprecated group/name - [DEFAULT]/notification_driver
#driver =
# A URL representing the messaging driver to use for
# notifications. If not set, we fall back to the same
# configuration used for RPC. (string value)
# Deprecated group/name - [DEFAULT]/notification_transport_url
#transport_url = <None>
# AMQP topic used for OpenStack notifications. (list value)
# Deprecated group/name - [rpc_notifier2]/topics
# Deprecated group/name - [DEFAULT]/notification_topics
#topics = notifications
# The maximum number of attempts to re-send a notification
# message which failed to be delivered due to a recoverable
# error. 0 - No retry, -1 - indefinite (integer value)
#retry = -1
[oslo_messaging_rabbit] [oslo_messaging_rabbit]
# The RabbitMQ broker address where a single node is used. (string value) # The RabbitMQ broker address where a single node is used. (string value)
# Deprecated group/name - [DEFAULT]/rabbit_host # Deprecated group/name - [DEFAULT]/rabbit_host

View File

@ -185,6 +185,34 @@ idle_timeout = 3600
# If False doesn't trace SQL requests. # If False doesn't trace SQL requests.
#trace_sqlalchemy = True #trace_sqlalchemy = True
[oslo_messaging_notifications]
#
# From oslo.messaging
#
# The Driver(s) to handle sending notifications. Possible
# values are messaging, messagingv2, routing, log, test, noop
# (multi valued)
# Deprecated group/name - [DEFAULT]/notification_driver
#driver =
# A URL representing the messaging driver to use for
# notifications. If not set, we fall back to the same
# configuration used for RPC. (string value)
# Deprecated group/name - [DEFAULT]/notification_transport_url
#transport_url = <None>
# AMQP topic used for OpenStack notifications. (list value)
# Deprecated group/name - [rpc_notifier2]/topics
# Deprecated group/name - [DEFAULT]/notification_topics
#topics = notifications
# The maximum number of attempts to re-send a notification
# message which failed to be delivered due to a recoverable
# error. 0 - No retry, -1 - indefinite (integer value)
#retry = -1
[oslo_messaging_rabbit] [oslo_messaging_rabbit]
# The RabbitMQ broker address where a single node is used. (string value) # The RabbitMQ broker address where a single node is used. (string value)
# Deprecated group/name - [DEFAULT]/rabbit_host # Deprecated group/name - [DEFAULT]/rabbit_host

View File

@ -179,6 +179,34 @@ idle_timeout = 3600
#optional: #optional:
#ca_file = /path/to/ca_file #ca_file = /path/to/ca_file
[oslo_messaging_notifications]
#
# From oslo.messaging
#
# The Driver(s) to handle sending notifications. Possible
# values are messaging, messagingv2, routing, log, test, noop
# (multi valued)
# Deprecated group/name - [DEFAULT]/notification_driver
#driver =
# A URL representing the messaging driver to use for
# notifications. If not set, we fall back to the same
# configuration used for RPC. (string value)
# Deprecated group/name - [DEFAULT]/notification_transport_url
#transport_url = <None>
# AMQP topic used for OpenStack notifications. (list value)
# Deprecated group/name - [rpc_notifier2]/topics
# Deprecated group/name - [DEFAULT]/notification_topics
#topics = notifications
# The maximum number of attempts to re-send a notification
# message which failed to be delivered due to a recoverable
# error. 0 - No retry, -1 - indefinite (integer value)
#retry = -1
[oslo_messaging_rabbit] [oslo_messaging_rabbit]
# The RabbitMQ broker address where a single node is used. (string value) # The RabbitMQ broker address where a single node is used. (string value)
# Deprecated group/name - [DEFAULT]/rabbit_host # Deprecated group/name - [DEFAULT]/rabbit_host

View File

@ -39,6 +39,7 @@ from trove.common.rpc import serializer as sz
CONF = cfg.CONF CONF = cfg.CONF
TRANSPORT = None TRANSPORT = None
NOTIFICATION_TRANSPORT = None
NOTIFIER = None NOTIFIER = None
ALLOWED_EXMODS = [ ALLOWED_EXMODS = [
@ -49,22 +50,29 @@ EXTRA_EXMODS = []
def init(conf): def init(conf):
global TRANSPORT, NOTIFIER global TRANSPORT, NOTIFICATION_TRANSPORT, NOTIFIER
exmods = get_allowed_exmods() exmods = get_allowed_exmods()
TRANSPORT = messaging.get_rpc_transport(conf, TRANSPORT = messaging.get_rpc_transport(conf,
allowed_remote_exmods=exmods) allowed_remote_exmods=exmods)
NOTIFICATION_TRANSPORT = messaging.get_notification_transport(
conf,
allowed_remote_exmods=exmods)
serializer = sz.TroveRequestContextSerializer( serializer = sz.TroveRequestContextSerializer(
messaging.JsonPayloadSerializer()) messaging.JsonPayloadSerializer())
NOTIFIER = messaging.Notifier(TRANSPORT, serializer=serializer) NOTIFIER = messaging.Notifier(NOTIFICATION_TRANSPORT,
serializer=serializer)
def cleanup(): def cleanup():
global TRANSPORT, NOTIFIER global TRANSPORT, NOTIFICATION_TRANSPORT, NOTIFIER
assert TRANSPORT is not None assert TRANSPORT is not None
assert NOTIFICATION_TRANSPORT is not None
assert NOTIFIER is not None assert NOTIFIER is not None
TRANSPORT.cleanup() TRANSPORT.cleanup()
TRANSPORT = NOTIFIER = None NOTIFICATION_TRANSPORT.cleanup()
TRANSPORT = NOTIFICATION_TRANSPORT = NOTIFIER = None
def set_defaults(control_exchange): def set_defaults(control_exchange):