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

true or false

true

Признак вывода в лог BROKER_CORE_CONFIGURATION*

IS_LOG_ADDRESS_QUEUES_CONFIG

true or false

true

Признак вывода в лог BROKER_ADDRESS_QUEUES_CONFIGURATION*

IS_LOG_ADDRESS_SETTINGS_CONFIG

true or false

true

Признак вывода в лог IS_LOG_ADDRESS_SETTINGS_CONFIG*

IS_LOG_SECURITY_SETTINGS_CONFIG

true or false

true

Признак вывода в лог IS_LOG_SECURITY_SETTINGS_CONFIG*

IS_LOG_DIVERT_SETTINGS_CONFIG

true or false

true

Признак вывода в лог IS_LOG_DIVERT_SETTINGS_CONFIG*

IS_PRETTY_LOG

true or false

true

Признак формирования данных в формате json в pretty-формате**

*: 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;

  • playbookartemis.yml;

  • tagsconfig_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" # вывод в удобочитаемом формате

Особенности использования плагина#

  1. При старте брокера с подключенным плагином(с дефолтными настройками) и настроенным 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: ...
  1. При обновлении 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": {}
         }
      }
   ]
}