BrokerConfigLoggingPlugin#
Описание плагина#
Плагин предназначен для формирования логов, содержащих данные конфигурации брокера Artemis MQ. В логах представлены данные в формате json по следующим блокам настроек сервера:
BROKER_CORE_CONFIGURATION- настройки ядра брокера;BROKER_ADDRESS_QUEUES_CONFIGURATION- настройки адресов и связанных с ними очередей;BROKER_ADDRESS_SETTINGS_CONFIGURATION- настройки адресов;BROKER_SECURITY_SETTINGS_CONFIGURATION- настройки ролей для адресов;BROKER_DIVERT_CONFIGURATION- настройки перенаправлений сообщений с одного адреса на другой.
Для вывода логов необходима настройка logger - ru.sbt.ss.artemis.plugin.logging.broker.config.callback.LoggingBrokerConfCallback.
Ручное подключение плагина#
Для подключения плагина к SMBX необходимо:
в
broker_instance_dir/etc/broker.xmlнеобходимо добавить настройки плагина в разделеbroker-plugins;в classpath SMBX (например, broker_instance_dir/lib) положить библиотеку плагина logger-plugin-*.jar.
Настройки плагина#
Настройка |
Возможные значения |
Дефолтное значение |
Комментарии |
|---|---|---|---|
IS_LOG_CORE_CONFIG |
|
|
Признак вывода в лог BROKER_CORE_CONFIGURATION* |
IS_LOG_ADDRESS_QUEUES_CONFIG |
|
|
Признак вывода в лог BROKER_ADDRESS_QUEUES_CONFIGURATION* |
IS_LOG_ADDRESS_SETTINGS_CONFIG |
|
|
Признак вывода в лог IS_LOG_ADDRESS_SETTINGS_CONFIG* |
IS_LOG_SECURITY_SETTINGS_CONFIG |
|
|
Признак вывода в лог IS_LOG_SECURITY_SETTINGS_CONFIG* |
IS_LOG_DIVERT_SETTINGS_CONFIG |
|
|
Признак вывода в лог IS_LOG_DIVERT_SETTINGS_CONFIG* |
IS_PRETTY_LOG |
|
|
Признак формирования данных в формате |
*: true - выводить в лог, false - не выводить в лог
**: true - формировать в pretty-формате, false - не формировать в pretty-формате
Пример настройки плагина в broker.xml#
<broker-plugins>
<broker-plugin class-name="ru.sbt.ss.artemis.plugin.logging.broker.config.callback.LoggingBrokerConfCallback">
<!-- Все настройки являются необязательными -->
<property key="IS_LOG_CORE_CONFIG" value="true"/>
<property key="IS_LOG_ADDRESS_QUEUES_CONFIG" value="false"/>
<property key="IS_LOG_ADDRESS_SETTINGS_CONFIG" value="true"/>
<property key="IS_LOG_SECURITY_SETTINGS_CONFIG" value="true"/>
<property key="IS_LOG_DIVERT_SETTINGS_CONFIG" value="false"/>
<property key="IS_PRETTY_LOG" value="true"/>
</broker-plugin>
</broker-plugins>
Подключение plugin через Jenkins Job artemis_custom#
Для подключения plugin с помощью Jenkins, необходимо в файле inventories/<новая директория>/group_vars/all/vars.yml внести настройки (пример приведен ниже), далее запустить Jenkins Job artemis_custom с параметрами:
inventory— выбрать инвентори, для которого запускается plugin;playbook— artemis.yml;tags— config_log_plugin.
Пример настройки plugin в vars.yml#
config_log_plugin: # плагин логирования конфигурации брокера
IS_LOG_CORE_CONFIG: "true" # настройки ядра брокера
IS_LOG_ADDRESS_QUEUES_CONFIG: "true" # настройки адресов и связанных с ними очередей
IS_LOG_ADDRESS_SETTINGS_CONFIG: "true" # настройки адресов
IS_LOG_SECURITY_SETTINGS_CONFIG: "true" # настройки ролей для адресов
IS_LOG_DIVERT_SETTINGS_CONFIG: "true" # настройки перенаправлений сообщений с одного адреса на другой
IS_PRETTY_LOG: "true" # вывод в удобочитаемом формате
Особенности использования плагина#
При старте брокера с подключенным плагином(с дефолтными настройками) и настроенным logger в лог будут поступать следующие записи:
INFO r.s.s.a.p.l.broker.config.callback.LoggingBrokerConfCallback - ArtemisMQ broker configuration after start
INFO r.s.s.a.p.l.broker.config.callback.LoggingBrokerConfCallback - BROKER_CORE_CONFIGURATION_APPLIED: ...
INFO r.s.s.a.p.l.broker.config.callback.LoggingBrokerConfCallback - BROKER_ADDRESSES_QUEUES_CONFIGURATION_APPLIED: ...
INFO r.s.s.a.p.l.broker.config.callback.LoggingBrokerConfCallback - BROKER_ADDRESS_SETTINGS_CONFIGURATION_APPLIED: ...
INFO r.s.s.a.p.l.broker.config.callback.LoggingBrokerConfCallback - BROKER_SECURITY_SETTINGS_CONFIGURATION_APPLIED: ...
INFO r.s.s.a.p.l.broker.config.callback.LoggingBrokerConfCallback - BROKER_DIVERT_SETTINGS_CONFIGURATION_APPLIED: ...
При обновлении
broker.xmlи связанных с ним настроек адресов, очередей, безопасности, перенаправлений происходит перезагрузка конфигурации в части настроек, связанных с:
BROKER_ADDRESS_QUEUES_CONFIGURATION;
BROKER_ADDRESS_SETTINGS_CONFIGURATION;
BROKER_SECURITY_SETTINGS_CONFIGURATION;
BROKER_DIVERT_CONFIGURATION.
INFO r.s.s.a.p.l.broker.config.callback.LoggingBrokerConfCallback - ArtemisMQ broker configuration after reloaded. Broker core configuration isn't changed after reloaded
INFO r.s.s.a.p.l.broker.config.callback.LoggingBrokerConfCallback - BROKER_ADDRESSES_QUEUES_CONFIGURATION_APPLIED_AFTER_RELOADED: ...
INFO r.s.s.a.p.l.broker.config.callback.LoggingBrokerConfCallback - BROKER_ADDRESS_SETTINGS_CONFIGURATION_APPLIED_AFTER_RELOADED: ...
INFO r.s.s.a.p.l.broker.config.callback.LoggingBrokerConfCallback - BROKER_SECURITY_SETTINGS_CONFIGURATION_APPLIED_AFTER_RELOADED: ...
INFO r.s.s.a.p.l.broker.config.callback.LoggingBrokerConfCallback - BROKER_DIVERT_SETTINGS_CONFIGURATION_APPLIED_AFTER_RELOADED: ...
Поэтому, после перезагрузки конфигурации в лог будут выведены обновленные конфигурации, связанные только с блоками настроек, описанными выше.
В случае, если в broker.xml будут обновлены параметры конфигурации, связанные с BROKER_CORE_CONFIGURATION, то
обновление значений таких параметров при перезагрузке конфигурации не произойдет.
Для обновления параметров, связанных с BROKER_CORE_CONFIGURATION, необходимо перезапустить брокер.
Пример вывода логов#
INFO r.s.s.a.p.l.broker.config.callback.LoggingBrokerConfCallback - BROKER_CORE_CONFIGURATION_APPLIED:
{
"brokerName": "broker_localhost_web_without_ssl22222222787898952",
"persistence": true,
"persistDeliveryCountBeforeDelivery": false,
"scheduledThreadPoolMaxSize": 5,
"threadPoolMaxSize": 30,
"securityInvalidationInterval": 10000,
"authenticationCacheSize": 1000,
"authorizationCacheSize": 1000,
"securityEnabled": true,
"gracefulShutdownEnabled": true,
"gracefulShutdownTimeout": 10000,
"jmxManagementEnabled": true,
"jmxUseBrokerName": true,
"connectionTTLOverride": -1,
"messageExpiryScanPeriod": 30000,
"addressQueueScanPeriod": 30000,
"idCacheSize": 20000,
"persistIDCache": true,
"incomingInterceptorClassNames": [ ],
"outgoingInterceptorClassNames": [ ],
"connectorConfigs": [
{
"name": "artemis",
"factoryClassName": "org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnectorFactory",
"params": {
"trustStorePassword": "*****",
"host": "localhost",
"verifyHost": "false",
"port": "61616",
"enabledProtocols": "TLSv1.2,TLSv1.3",
"trustStorePath": "example.jks",
"keyStorePath": "example.jks",
"keyStorePassword": "*****",
"sslEnabled": "true"
},
"extraParams": { }
}
],
"acceptorConfigs": [
{
"name": "artemis",
"factoryClassName": "org.apache.activemq.artemis.core.remoting.impl.netty.NettyAcceptorFactory",
"params": {
"trustStorePassword": "*****",
"protocols": "CORE,AMQP,MQTT",
"host": "localhost",
"verifyHost": "false",
"scheme": "tcp",
"tcpReceiveBufferSize": "1048576",
"enabledProtocols": "TLSv1.2,TLSv1.3",
"trustStorePath": "example.jks",
"keyStorePath": "example.jks",
"needClientAuth": "true",
"tcpSendBufferSize": "1048576",
"port": "61616",
"useEpoll": "true",
"keyStorePassword": "*****",
"sslEnabled": "true"
},
"extraParams": {
"amqpMinLargeMessageSize": "102400",
"amqpCredits": "1000",
"supportAdvisory": "false",
"suppressInternalManagementObjects": "false",
"amqpLowCredits": "300",
"amqpDuplicateDetection": "true"
}
}
],
"clusterConfigurations": [
{
"name": "my-cluster_1",
"address": "ExQ1",
"connectorName": "artemis",
"clientFailureCheckPeriod": 30000,
"connectionTTL": 60000,
"retryInterval": 500,
"retryIntervalMultiplier": 1.0,
"maxRetryInterval": 2000,
"initialConnectAttempts": -1,
"reconnectAttempts": -1,
"callTimeout": 30000,
"callFailoverTimeout": 30000,
"duplicateDetection": true,
"messageLoadBalancingType": "STRICT",
"staticConnectors": [
"node0"
],
"maxHops": 1,
"confirmationWindowSize": 10485760,
"producerWindowSize": -1,
"allowDirectConnectionsOnly": false,
"minLargeMessageSize": 102400,
"clusterNotificationInterval": 1000,
"clusterNotificationAttempts": 2
}
],
"pagingDirectory": "/artemis/broker/data/paging",
"maxConcurrentPageIO": 5,
"readWholePage": false,
"largeMessagesDirectory": "/artemis/broker/data/large-messages",
"bindingsDirectory": "/artemis/broker/data/bindings",
"createBindingsDir": true,
"journalDirectory": "/artemis/broker/data/journal",
"journalRetentionDirectory": "UNDEFINED",
"journalRetentionMaxBytes": 0,
"journalRetentionPeriod": 0,
"nodeManagerLockDirectory": "/artemis/broker/data/journal",
"createJournalDir": true,
"journalType": "NIO",
"journalSyncTransactional": true,
"journalSyncNonTransactional": true,
"journalCompactMinFiles": 10,
"journalCompactPercentage": 30,
"journalFileOpenTimeout": 5,
"journalFileSize": 10485760,
"journalPoolFiles": 10,
"journalMinFiles": 2,
"journalMaxAtticFiles": 10,
"journalMaxIO_AIO": 4096,
"journalBufferTimeout_AIO": 500000,
"journalDeviceBlockSize": 4096,
"journalBufferSize_AIO": 501760,
"journalMaxIO_NIO": 4032,
"journalBufferTimeout_NIO": 501760,
"journalBufferSize_NIO": 501760,
"logJournalWriteRate": false,
"messageCounterEnabled": false,
"messageCounterSamplePeriod": 10000,
"messageCounterMaxDayHistory": 10,
"transactionTimeout": 300000,
"transactionTimeoutScanPeriod": 1000,
"managementAddress": "activemq.management",
"managementNotificationAddress": "activemq.notifications",
"clusterUser": "ACTIVEMQ.CLUSTER.ADMIN.USER",
"clusterPassword": "*****",
"serverDumpInterval": -1,
"memoryWarningThreshold": 25,
"memoryMeasureInterval": -1,
"resolveProtocols": true,
"journalLockAcquisitionTimeout": -1,
"haConfiguration": {
"type": "Live Only",
"scaleDownConfiguration": {
"connectors": [
"node0"
],
"discoveryGroup": "UNDEFINED",
"groupName": "UNDEFINED",
"clusterName": "UNDEFINED",
"enabled": true
}
},
"resourceLimits": [
{
"userName": "myUser",
"maxConnections": 5,
"maxQueues": 3
},
{
"userName": "myUser_1",
"maxConnections": 12,
"maxQueues": 15
}
],
"populateValidatedUser": true,
"rejectEmptyValidatedUser": false,
"connectionTtlCheckInterval": 2000,
"configurationUrl": "file:/artemis/broker/etc//broker.xml",
"configurationFileRefreshPeriod": 5000,
"globalMaxSize": 1073741824,
"maxDiskUsage": 90,
"diskScanPeriod": 5000,
"networkCheckList": "UNDEFINED",
"networkURLList": "UNDEFINED",
"networkCheckPeriod": 5000,
"networkCheckTimeout": 1000,
"networkCheckNIC": "UNDEFINED",
"networkCheckPingCommand": "ping -c 1 -t %d %s",
"networkCheckPing6Command": "ping6 -c 1 %2$s",
"criticalAnalyzer": true,
"criticalAnalyzerPolicy": "HALT",
"criticalAnalyzerCheckPeriod": 60000,
"pageSyncTimeout": 1484000,
"temporaryQueueNamespace": "",
"pluginConfigurations": [
{
"pluginClassName": "ru.sbt.ss.artemis.rate_limiter.plugin.ProducerRateLimiterPlugin",
"props": {
"CONFIG_PATH": "rate_lim_1.conf"
}
},
{
"pluginClassName": "ru.sbt.ss.artemis.plugin.message.MessagePlugin",
"props": {
"FROM_SERVER_TIMESTAMP_HEADER_NAME": "",
"BLACK_LIST_ADDRESSES": "",
"DURABLE_HEADER_NAME": "durable",
"TIMESTAMP_HEADERS_MODE": "OFF",
"BROKER_LATENCY_METRIC_COORDINATES": "",
"BROKER_LATENCY_METRIC_MODE": "OFF",
"MESSAGE_ID_HEADER_NAMES": "RqUID",
"HEADER_NAMES_FOR_LOG": ""
}
},
{
"pluginClassName": "ru.sbt.ss.artemis.plugin.logging.broker.config.LoggingBrokerConfigurationPlugin",
"props": {
"IS_LOG_ADDRESS_SETTINGS_CONFIG": "true",
"IS_LOG_DIVERT_SETTINGS_CONFIG": "false",
"IS_LOG_ADDRESS_QUEUES_CONFIG": "true",
"IS_LOG_CORE_CONFIG": "true",
"IS_PRETTY_LOG": "true",
"IS_LOG_SECURITY_SETTINGS_CONFIG": "true"
}
}
]
}
INFO r.s.s.a.p.l.broker.config.callback.LoggingBrokerConfCallback - BROKER_ADDRESSES_QUEUES_CONFIGURATION_APPLIED:
{
"settings": [
{
"addressName": "DLQ",
"routingType": [
"ANYCAST"
],
"queueConfigurations": [
{
"id": 0,
"queueName": "DLQ",
"address": "DLQ",
"routingType": "ANYCAST",
"filterString": "UNDEFINED",
"durable": true,
"user": "UNDEFINED",
"maxConsumers": 0,
"exclusive": false,
"groupRebalance": false,
"groupRebalancePauseDispatch": false,
"groupBuckets": 0,
"groupFirstKey": "UNDEFINED",
"lastValue": false,
"lastValueKey": "UNDEFINED",
"nonDestructive": false,
"purgeOnNoConsumers": false,
"enabled": false,
"consumersBeforeDispatch": 0,
"delayBeforeDispatch": 0,
"autoDelete": false,
"autoDeleteDelay": 0,
"autoDeleteMessageCount": 0,
"ringSize": -1,
"configurationManaged": false,
"temporary": false,
"autoCreateAddress": false,
"internal": false,
"transient": false,
"autoCreated": false
}
]
},
{
"addressName": "ExpiryQueue",
"routingType": [
"ANYCAST"
],
"queueConfigurations": [
{
"id": 0,
"queueName": "ExpiryQueue",
"address": "ExpiryQueue",
"routingType": "ANYCAST",
"filterString": "UNDEFINED",
"durable": true,
"user": "UNDEFINED",
"maxConsumers": 0,
"exclusive": false,
"groupRebalance": false,
"groupRebalancePauseDispatch": false,
"groupBuckets": 0,
"groupFirstKey": "UNDEFINED",
"lastValue": false,
"lastValueKey": "UNDEFINED",
"nonDestructive": false,
"purgeOnNoConsumers": false,
"enabled": false,
"consumersBeforeDispatch": 0,
"delayBeforeDispatch": 0,
"autoDelete": false,
"autoDeleteDelay": 0,
"autoDeleteMessageCount": 0,
"ringSize": -1,
"configurationManaged": false,
"temporary": false,
"autoCreateAddress": false,
"internal": false,
"transient": false,
"autoCreated": false
}
]
}
]
}
INFO r.s.s.a.p.l.broker.config.callback.LoggingBrokerConfCallback - BROKER_ADDRESS_SETTINGS_CONFIGURATION_APPLIED:
{
"address->settings": {
"SP.Service.RS": {
"addressFullMessagePolicy": "FAIL",
"deadLetterAddress": "DLQ",
"expiryAddress": "ExpiryQueue",
"expiryDelay": -1,
"minExpiryDelay": -1,
"maxExpiryDelay": -1,
"defaultLastValueQueue": false,
"defaultNonDestructive": false,
"defaultExclusiveQueue": false,
"maxDeliveryAttempts": 3,
"maxSizeBytes": -1,
"maxSizeBytesRejectThreshold": -1,
"messageCounterHistoryDayLimit": 10,
"pageSizeBytes": 10485760,
"pageMaxCache": 5,
"redeliveryDelay": 0,
"redeliveryMultiplier": 1.0,
"redeliveryCollisionAvoidanceFactor": 0.0,
"maxRedeliveryDelay": 0,
"redistributionDelay": 1500,
"sendToDLAOnNoRoute": true,
"slowConsumerThreshold": -1,
"slowConsumerThresholdMeasurementUnit": "MESSAGES_PER_SECOND",
"slowConsumerCheckPeriod": 5,
"slowConsumerPolicy": "NOTIFY",
"autoCreateQueues": false,
"autoDeleteQueues": false,
"autoDeleteCreatedQueues": false,
"autoDeleteQueuesDelay": 0,
"autoDeleteQueuesMessageCount": 0,
"configDeleteQueues": "FORCE",
"autoCreateAddresses": false,
"autoDeleteAddresses": false,
"autoDeleteAddressesDelay": 0,
"configDeleteAddresses": "FORCE",
"configDeleteDiverts": "OFF",
"managementBrowsePageSize": 200,
"managementMessageAttributeSizeLimit": 256,
"defaultMaxConsumers": -1,
"defaultPurgeOnNoConsumers": false,
"defaultQueueRoutingType": "MULTICAST",
"defaultAddressRoutingType": "MULTICAST",
"defaultConsumersBeforeDispatch": 0,
"defaultDelayBeforeDispatch": -1,
"defaultConsumerWindowSize": 1048576,
"defaultGroupRebalance": false,
"defaultGroupRebalancePauseDispatch": false,
"defaultGroupBuckets": -1,
"defaultGroupFirstKey": "UNDEFINED",
"defaultRingSize": -1,
"retroactiveMessageCount": 0,
"autoCreateDeadLetterResources": false,
"deadLetterQueuePrefix": "DLQ.",
"deadLetterQueueSuffix": "",
"autoCreateExpiryResources": false,
"expiryQueuePrefix": "EXP.",
"expiryQueueSuffix": "",
"enableMetrics": true,
"enableIngressTimestamp": false
},
"#": {
"addressFullMessagePolicy": "FAIL",
"deadLetterAddress": "DLQ",
"expiryAddress": "ExpiryQueue",
"expiryDelay": -1,
"minExpiryDelay": -1,
"maxExpiryDelay": -1,
"defaultLastValueQueue": false,
"defaultNonDestructive": false,
"defaultExclusiveQueue": false,
"maxDeliveryAttempts": 10,
"maxSizeBytes": -1,
"maxSizeBytesRejectThreshold": -1,
"messageCounterHistoryDayLimit": 10,
"pageSizeBytes": 10485760,
"pageMaxCache": 5,
"redeliveryDelay": 0,
"redeliveryMultiplier": 1.0,
"redeliveryCollisionAvoidanceFactor": 0.0,
"maxRedeliveryDelay": 0,
"redistributionDelay": -1,
"sendToDLAOnNoRoute": false,
"slowConsumerThreshold": -1,
"slowConsumerThresholdMeasurementUnit": "MESSAGES_PER_SECOND",
"slowConsumerCheckPeriod": 5,
"slowConsumerPolicy": "NOTIFY",
"autoCreateQueues": false,
"autoDeleteQueues": false,
"autoDeleteCreatedQueues": false,
"autoDeleteQueuesDelay": 0,
"autoDeleteQueuesMessageCount": 0,
"configDeleteQueues": "FORCE",
"autoCreateAddresses": false,
"autoDeleteAddresses": false,
"autoDeleteAddressesDelay": 0,
"configDeleteAddresses": "FORCE",
"configDeleteDiverts": "OFF",
"managementBrowsePageSize": 200,
"managementMessageAttributeSizeLimit": 256,
"defaultMaxConsumers": -1,
"defaultPurgeOnNoConsumers": false,
"defaultQueueRoutingType": "MULTICAST",
"defaultAddressRoutingType": "MULTICAST",
"defaultConsumersBeforeDispatch": 0,
"defaultDelayBeforeDispatch": -1,
"defaultConsumerWindowSize": 1048576,
"defaultGroupRebalance": false,
"defaultGroupRebalancePauseDispatch": false,
"defaultGroupBuckets": -1,
"defaultGroupFirstKey": "UNDEFINED",
"defaultRingSize": -1,
"retroactiveMessageCount": 0,
"autoCreateDeadLetterResources": false,
"deadLetterQueuePrefix": "DLQ.",
"deadLetterQueueSuffix": "",
"autoCreateExpiryResources": false,
"expiryQueuePrefix": "EXP.",
"expiryQueueSuffix": "",
"enableMetrics": true,
"enableIngressTimestamp": false
}
}
}
INFO r.s.s.a.p.l.broker.config.callback.LoggingBrokerConfCallback - BROKER_SECURITY_SETTINGS_CONFIGURATION_APPLIED:
{
"address->settings": {
"SP.Service.RS::SP.SC1.Service.RS": [
{
"roleName": "send_SP.Service.RS_SP.SC1.Service.RS",
"send": true,
"consume": false,
"createAddress": false,
"deleteAddress": false,
"createDurableQueue": false,
"deleteDurableQueue": false,
"createNonDurableQueue": false,
"deleteNonDurableQueue": false,
"manage": false,
"browse": false
},
{
"roleName": "consume_SP.Service.RS_SP.SC1.Service.RS",
"send": false,
"consume": true,
"createAddress": false,
"deleteAddress": false,
"createDurableQueue": false,
"deleteDurableQueue": false,
"createNonDurableQueue": false,
"deleteNonDurableQueue": false,
"manage": false,
"browse": false
},
{
"roleName": "browse_SP.Service.RS_SP.SC1.Service.RS",
"send": false,
"consume": false,
"createAddress": false,
"deleteAddress": false,
"createDurableQueue": false,
"deleteDurableQueue": false,
"createNonDurableQueue": false,
"deleteNonDurableQueue": false,
"manage": false,
"browse": true
}
],
"SP.Service.RS": [
{
"roleName": "send_SP.Service.RS",
"send": true,
"consume": false,
"createAddress": false,
"deleteAddress": false,
"createDurableQueue": false,
"deleteDurableQueue": false,
"createNonDurableQueue": false,
"deleteNonDurableQueue": false,
"manage": false,
"browse": false
},
{
"roleName": "consume_SP.Service.RS",
"send": false,
"consume": true,
"createAddress": false,
"deleteAddress": false,
"createDurableQueue": false,
"deleteDurableQueue": false,
"createNonDurableQueue": false,
"deleteNonDurableQueue": false,
"manage": false,
"browse": false
},
{
"roleName": "browse_SP.Service.RS",
"send": false,
"consume": false,
"createAddress": false,
"deleteAddress": false,
"createDurableQueue": false,
"deleteDurableQueue": false,
"createNonDurableQueue": false,
"deleteNonDurableQueue": false,
"manage": false,
"browse": true
}
]
}
}
INFO r.s.s.a.p.l.broker.config.callback.LoggingBrokerConfCallback - BROKER_DIVERT_SETTINGS_CONFIGURATION_APPLIED:
{
"diverts": [
{
"name": "order-divert",
"routingName": "order-divert",
"address": "orders",
"forwardingAddress": "spyTopic",
"exclusive": false,
"filterString": "UNDEFINED",
"transformerConfiguration": {
"className": "UNDEFINED",
"properties": {}
}
},
{
"name": "prices-divert",
"routingName": "prices-divert",
"address": "priceUpdates",
"forwardingAddress": "priceForwarding",
"exclusive": true,
"filterString": "office='New York'",
"transformerConfiguration": {
"className": "UNDEFINED",
"properties": {}
}
}
]
}