forked from community/product-iots
parent
56ec6b1e96
commit
ffa6a9cf59
@ -1,482 +0,0 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!--
|
||||
~ Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
~
|
||||
~ WSO2 Inc. licenses this file to you under the Apache License,
|
||||
~ Version 2.0 (the "License"); you may not use this file except
|
||||
~ in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing,
|
||||
~ software distributed under the License is distributed on an
|
||||
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
~ KIND, either express or implied. See the License for the
|
||||
~ specific language governing permissions and limitations
|
||||
~ under the License.
|
||||
-->
|
||||
|
||||
<!-- This is the root configuration file of WSO2 Message Broker (MB). Links to configurations of
|
||||
associated libraries are also specified here.
|
||||
|
||||
[Note for developers] - If you intend to rename or modify a property name, remember to update
|
||||
relevant, org.wso2.andes.configuration.enums.AndesConfiguration, enum value using the Xpath
|
||||
expression of the property.
|
||||
|
||||
This file is ciphertool compliant. Refer PRODUCT_HOME/repository/conf/security/cipher-text.properties for examples.-->
|
||||
<broker>
|
||||
|
||||
<coordination>
|
||||
<!-- You can override the cluster node identifier of this MB node using the nodeID.
|
||||
If it is left as "default", the default node ID will be generated for it. (Using IP + UUID).
|
||||
The node ID of each member should ALWAYS be unique.-->
|
||||
<nodeID>default</nodeID>
|
||||
|
||||
<!-- Thrift is used to maintain and sync slot (message groups) ranges between MB nodes. -->
|
||||
<thriftServerHost>localhost</thriftServerHost>
|
||||
<thriftServerPort>7611</thriftServerPort>
|
||||
<!--Thrift server reconnect timeout. Value specified in SECONDS-->
|
||||
<thriftServerReconnectTimeout>5</thriftServerReconnectTimeout>
|
||||
<!-- Hazelcast reliable topics are used to share all notifications across the MB cluster (e.g. subscription
|
||||
changes), And this property defines the time-to-live for a notification since its creation. (in Seconds) -->
|
||||
<clusterNotificationTimeout>10</clusterNotificationTimeout>
|
||||
</coordination>
|
||||
|
||||
<!-- You can enable/disable specific messaging transports in this section. By default all
|
||||
transports are enabled. This section also allows you to customize the messaging flows used
|
||||
within WSO2 MB. NOT performance related, but logic related. -->
|
||||
<transports>
|
||||
<amqp enabled="true">
|
||||
<bindAddress>0.0.0.0</bindAddress>
|
||||
|
||||
<defaultConnection enabled="true" port="5672" />
|
||||
|
||||
<sslConnection enabled="true" port="8672">
|
||||
<keyStore>
|
||||
<location>repository/resources/security/wso2carbon.jks</location>
|
||||
<password>wso2carbon</password>
|
||||
</keyStore>
|
||||
<trustStore>
|
||||
<location>repository/resources/security/client-truststore.jks</location>
|
||||
<password>wso2carbon</password>
|
||||
</trustStore>
|
||||
</sslConnection>
|
||||
|
||||
<maximumRedeliveryAttempts>10</maximumRedeliveryAttempts>
|
||||
<allowSharedTopicSubscriptions>false</allowSharedTopicSubscriptions>
|
||||
<allowStrictNameValidation>true</allowStrictNameValidation>
|
||||
|
||||
<!-- Refer repository/conf/advanced/qpid-config.xml for further AMQP-specific configurations.-->
|
||||
</amqp>
|
||||
<mqtt enabled="true">
|
||||
<bindAddress>0.0.0.0</bindAddress>
|
||||
|
||||
<defaultConnection enabled="true" port="1883" />
|
||||
|
||||
<sslConnection enabled="true" port="8883">
|
||||
<keyStore>
|
||||
<location>repository/resources/security/wso2carbon.jks</location>
|
||||
<password>wso2carbon</password>
|
||||
</keyStore>
|
||||
<trustStore>
|
||||
<location>repository/resources/security/client-truststore.jks</location>
|
||||
<password>wso2carbon</password>
|
||||
</trustStore>
|
||||
</sslConnection>
|
||||
|
||||
<!--All receiving events/messages will be in this ring buffer. Ring buffer size
|
||||
of MQTT inbound event disruptor. Default is set to 32768 (1024 * 32)
|
||||
Having a large ring buffer will have a increase memory usage and will improve performance
|
||||
and vise versa -->
|
||||
<inboundBufferSize>32768</inboundBufferSize>
|
||||
|
||||
<!-- Messages delivered to clients will be placed in this ring buffer.
|
||||
Ring buffer size of MQTT delivery event disruptor. Default is set to 32768 (1024 * 32)
|
||||
Having a large ring buffer will have a increase memory usage and will improve performance
|
||||
and vise versa -->
|
||||
<deliveryBufferSize>32768</deliveryBufferSize>
|
||||
|
||||
|
||||
<security>
|
||||
<!--
|
||||
Instructs the MQTT server whether clients should always send credentials
|
||||
when establishing a connection.
|
||||
Possible values:
|
||||
OPTIONAL: This is the default value. MQTT clients may or may not send
|
||||
credentials. If a client sends credentials server will
|
||||
validates it.
|
||||
If client doesn't send credentials then server will not
|
||||
authenticate, but allows client to establish the connection.
|
||||
This behavior adheres to MQTT 3.1 specification.
|
||||
REQUIRED: Clients should always provide credentials when connecting.
|
||||
If client doesn't send credentials or they are invalid
|
||||
server rejects the connection.
|
||||
-->
|
||||
<authentication>REQUIRED</authentication>
|
||||
|
||||
<!--Class name of the authenticator to use. class should
|
||||
inherit from org.dna.mqtt.moquette.server.IAuthenticator
|
||||
Note: default implementation authenticates against carbon user store
|
||||
based on supplied username/password
|
||||
-->
|
||||
<!--<authenticator class="org.wso2.carbon.andes.authentication.andes.CarbonBasedMQTTAuthenticator"/>-->
|
||||
<authenticator class="org.wso2.carbon.andes.authentication.andes.OAuth2BasedMQTTAuthenticator">
|
||||
<property name="hostURL">https://localhost:9443/services/OAuth2TokenValidationService</property>
|
||||
<property name="username">admin</property>
|
||||
<property name="password">admin</property>
|
||||
<property name="maxConnectionsPerHost">10</property>
|
||||
<property name="maxTotalConnections">150</property>
|
||||
</authenticator>
|
||||
|
||||
<!--
|
||||
Instructs the MQTT server whether clients should be authorized before either publishing or subscribing
|
||||
Possible values:
|
||||
NOT_REQUIRED: This is the default value. MQTT clients will skip the authorization check
|
||||
REQUIRED: Clients will authorized before publishing. this will execute the class given in authorzier
|
||||
Note: authentication should be REQUIRED for authorization to be REQUIRED.
|
||||
-->
|
||||
<authorization>REQUIRED</authorization>
|
||||
|
||||
<!--Class name of the authorizer to use. class should
|
||||
inherit from org.dna.mqtt.moquette.server.IAutherizer
|
||||
Note: default implementation authorizes against carbon permission with the topic.
|
||||
-->
|
||||
<!--connectionPermission is required for a user to connect to broker-->
|
||||
<authorizer class="org.wso2.carbon.andes.extensions.device.mgt.mqtt.authorization.DeviceAccessBasedMQTTAuthorizer">
|
||||
</authorizer>
|
||||
</security>
|
||||
</mqtt>
|
||||
|
||||
</transports>
|
||||
|
||||
<!-- Depending on the database type selected in master-datasources.xml, you must enable the
|
||||
relevant Data access classes here. Currently WSO2 MB Supports RDBMS(any RDBMS store).
|
||||
These stores are accessed for two purposes.
|
||||
|
||||
1. For message persistence ("messageStore")
|
||||
2. To persist and access other information relevant to messaging protocols.("contextStore").-->
|
||||
|
||||
<!-- By default WSO2 MB runs with H2 persistent store. If you plan to use a different
|
||||
store, point to the relevant dataSource or uncomment the database appropriately.
|
||||
|
||||
RDBMS
|
||||
=====
|
||||
If you are running an RDBMS you can use the existing RDBMS implementation of stores
|
||||
by pointing to the correct data source by updating the property "dataSource".
|
||||
|
||||
Data source entry should be present in
|
||||
<MB_HOME>/repository/conf/datasources/master-datasources.xml.
|
||||
|
||||
-->
|
||||
<persistence>
|
||||
|
||||
<!-- RDBMS MB Store Configuration -->
|
||||
|
||||
<messageStore class="org.wso2.andes.store.rdbms.RDBMSMessageStoreImpl">
|
||||
<property name="dataSource">WSO2MBStoreDB</property>
|
||||
<property name="storeUnavailableSQLStateClasses">08</property>
|
||||
<property name="integrityViolationSQLStateClasses">23,27,44</property>
|
||||
<property name="dataErrorSQLStateClasses">21,22</property>
|
||||
<property name="transactionRollbackSQLStateClasses">40</property>
|
||||
</messageStore>
|
||||
|
||||
<contextStore class="org.wso2.andes.store.rdbms.RDBMSAndesContextStoreImpl">
|
||||
<property name="dataSource">WSO2MBStoreDB</property>
|
||||
<property name="storeUnavailableSQLStateClasses">08</property>
|
||||
<property name="integrityViolationSQLStateClasses">23,27,44</property>
|
||||
<property name="dataErrorSQLStateClasses">21,22</property>
|
||||
<property name="transactionRollbackSQLStateClasses">40</property>
|
||||
</contextStore>
|
||||
|
||||
<cache>
|
||||
<!-- Size of the messages cache in MBs. Setting '0' will disable the cache. -->
|
||||
<size>256</size>
|
||||
<!-- Expected concurrency for the cache (4 is guava default) -->
|
||||
<concurrencyLevel>4</concurrencyLevel>
|
||||
<!--Number of seconds cache will keep messages after they are
|
||||
added (unless they are consumed and deleted).-->
|
||||
<expirySeconds>2</expirySeconds>
|
||||
|
||||
<!--Reference type used to hold messages in memory.
|
||||
weak - Using java weak references ( - results higher cache misses)
|
||||
strong - ordinary references ( - higher cache hits, but not good if server
|
||||
is going to run with limited heap size + under severe load).
|
||||
-->
|
||||
<valueReferenceType>strong</valueReferenceType>
|
||||
|
||||
<!--Prints cache statistics in 2 minute intervals
|
||||
in carbon log ( and console)-->
|
||||
<printStats>false</printStats>
|
||||
</cache>
|
||||
|
||||
<!-- This class decides how unique IDs are generated for the MB node. This id generator is
|
||||
expected to be thread safe and a implementation of interface
|
||||
org.wso2.andes.server.cluster.coordination.MessageIdGenerator
|
||||
|
||||
NOTE: This is NOT used in MB to generate message IDs. -->
|
||||
<idGenerator>org.wso2.andes.server.cluster.coordination.TimeStampBasedMessageIdGenerator</idGenerator>
|
||||
|
||||
<!-- This is the Task interval (in SECONDS) to check whether communication
|
||||
is healthy between message store (/Database) and this server instance. -->
|
||||
<storeHealthCheckInterval>10</storeHealthCheckInterval>
|
||||
</persistence>
|
||||
|
||||
<!--Publisher transaction related configurations.-->
|
||||
<transaction>
|
||||
|
||||
<!--Maximum batch size (Messages) for a transaction. Exceeding this limit will result
|
||||
in a failure in the subsequent commit request. Default is set to 10MB. Limit is
|
||||
calculated considering the payload of messages-->
|
||||
<maxBatchSizeInBytes>10000000</maxBatchSizeInBytes>
|
||||
</transaction>
|
||||
|
||||
<!-- This section allows you to tweak memory and processor allocations used by WSO2 MB.
|
||||
Broken down by critical processes so you have a clear view of which parameters to change in
|
||||
different scenarios. -->
|
||||
<performanceTuning>
|
||||
|
||||
<slots>
|
||||
<!--
|
||||
If message publishers are slow, time taken to fill the slot (up to <windowSize>) will be longer.
|
||||
This will add an latency to messages. Therefore broker will mark the slot as
|
||||
ready to deliver before even the slot is entirely filled after specified time.
|
||||
NOTE: specified in milliseconds.
|
||||
-->
|
||||
<messageAccumulationTimeout>2000</messageAccumulationTimeout>
|
||||
|
||||
<!--Rough estimate for size of a slot-->
|
||||
<windowSize>1000</windowSize>
|
||||
|
||||
<!-- Time interval which broker check for slots that can be marked as 'ready to deliver'
|
||||
(- slots which have a aged more than 'messageAccumulationTimeout')
|
||||
NOTE: specified in milliseconds.
|
||||
-->
|
||||
<timerPeriod>1000</timerPeriod>
|
||||
|
||||
<!--Number of SlotDeliveryWorker threads that should be started-->
|
||||
<workerThreadCount>5</workerThreadCount>
|
||||
|
||||
</slots>
|
||||
|
||||
<delivery>
|
||||
<!-- Maximum number of undelivered messages that can have in memory. Increasing this
|
||||
value increase the possibility of out of memory scenario but performance will be
|
||||
improved -->
|
||||
<maxNumberOfReadButUndeliveredMessages>1000</maxNumberOfReadButUndeliveredMessages>
|
||||
|
||||
<!-- This is the ring buffer size of the delivery disruptor. This value should be a
|
||||
power of 2 (E.g. 1024, 2048, 4096). Use a small ring size if you want to reduce the
|
||||
memory usage. -->
|
||||
<ringBufferSize>4096</ringBufferSize>
|
||||
|
||||
<!--Number of parallel readers used to used to read content from message store.
|
||||
Increasing this value will speed-up the message sending mechanism. But the load
|
||||
on the data store will increase. -->
|
||||
<parallelContentReaders>5</parallelContentReaders>
|
||||
|
||||
<!-- Number of parallel decompression handlers used to decompress messages before send to subscribers.
|
||||
Increasing this value will speed-up the message decompressing mechanism. But the system load
|
||||
will increase. -->
|
||||
<parallelDecompressionHandlers>5</parallelDecompressionHandlers>
|
||||
|
||||
<!-- Number of parallel delivery handlers used to send messages to subscribers.
|
||||
Increasing this value will speed-up the message sending mechanism. But the system load
|
||||
will increase. -->
|
||||
<parallelDeliveryHandlers>5</parallelDeliveryHandlers>
|
||||
|
||||
<!-- The size of the batch represents, at a given time the number of messages that could
|
||||
be retrieved from the database. -->
|
||||
<contentReadBatchSize>65000</contentReadBatchSize>
|
||||
|
||||
<contentCache>
|
||||
<!-- Specify the maximum number of entries the cache may contain. -->
|
||||
<maximumSize>100</maximumSize>
|
||||
<!-- Specify the time in seconds that each entry should be
|
||||
automatically removed from the cache after the entry's creation. -->
|
||||
<expiryTime>120</expiryTime>
|
||||
</contentCache>
|
||||
|
||||
<!--When delivering topic messages to multiple topic
|
||||
subscribers one of following stratigies can be choosen.
|
||||
|
||||
1. DISCARD_NONE - Broker do not loose any message to any subscriber.
|
||||
When there are slow subscribers this can cause broker
|
||||
go Out of Memory.
|
||||
|
||||
2. SLOWEST_SUB_RATE - Broker deliver to the speed of the slowest
|
||||
topic subscriber. This can cause fast subscribers
|
||||
to starve. But eliminate Out of Memory issue.
|
||||
|
||||
3. DISCARD_ALLOWED - Broker will try best to deliver. To eliminate Out
|
||||
of Memory threat broker limits sent but not acked message
|
||||
count to <maxUnackedMessages>.
|
||||
If it is breached, and <deliveryTimeout> is also
|
||||
breached message can either be lost or actually
|
||||
sent but ack is not honoured.
|
||||
-->
|
||||
<topicMessageDeliveryStrategy>
|
||||
<strategyName>DISCARD_NONE</strategyName>
|
||||
<!-- If you choose DISCARD_ALLOWED topic message delivery strategy,
|
||||
broker keep messages in memory until ack is done until this timeout.
|
||||
If an ack is not received under this timeout, ack will be simulated
|
||||
internally and real acknowledgement is discarded.
|
||||
deliveryTimeout is in seconds -->
|
||||
<deliveryTimeout>60</deliveryTimeout>
|
||||
</topicMessageDeliveryStrategy>
|
||||
</delivery>
|
||||
|
||||
<ackHandling>
|
||||
<!--Number of message acknowledgement handlers to process acknowledgements concurrently.
|
||||
These acknowledgement handlers will batch and process acknowledgements. -->
|
||||
<ackHandlerCount>1</ackHandlerCount>
|
||||
|
||||
<!--Maximum batch size of the acknowledgement handler. Andes process acknowledgements in
|
||||
batches using Disruptor Increasing the batch size reduces the number of calls made to
|
||||
database by MB. Depending on the database optimal batch size this value should be set.
|
||||
Batches will be of the maximum batch size mostly in high throughput scenarios.
|
||||
Underlying implementation use Disruptor for batching hence will batch message at a
|
||||
lesser value than this in low throughput scenarios -->
|
||||
<ackHandlerBatchSize>100</ackHandlerBatchSize>
|
||||
|
||||
<!-- Message delivery from server to the client will be paused temporarily if number of
|
||||
delivered but unacknowledged message count reaches this size. Should be set considering
|
||||
message consume rate. This is to avoid overwhelming slow subscribers. -->
|
||||
<maxUnackedMessages>1000</maxUnackedMessages>
|
||||
</ackHandling>
|
||||
|
||||
<contentHandling>
|
||||
|
||||
<!-- Within Andes there are content chunk handlers which convert incoming large content
|
||||
chunks into max content chunk size allowed by Andes core. These handlers run in parallel
|
||||
converting large content chunks to smaller chunks.
|
||||
|
||||
If the protocol specific content chunk size is different from the max chunk size allowed
|
||||
by Andes core and there are significant number of large messages published, then having
|
||||
multiple handlers will increase performance. -->
|
||||
<contentChunkHandlerCount>3</contentChunkHandlerCount>
|
||||
|
||||
<!-- Andes core will store message content chunks according to this chunk size. Different
|
||||
database will have limits and performance gains by tuning this parameter.
|
||||
|
||||
For instance in MySQL the maximum table column size for content is less than 65534, which
|
||||
is the default chunk size of AMQP. By changing this parameter to a lesser value we can
|
||||
store large content chunks converted to smaller content chunks within the DB with this
|
||||
parameter. -->
|
||||
<maxContentChunkSize>65500</maxContentChunkSize>
|
||||
|
||||
<!-- This is the configuration to allow compression of message contents, before store messages
|
||||
into the database.-->
|
||||
<allowCompression>false</allowCompression>
|
||||
|
||||
<!-- This is the configuration to change the value of the content compression threshold (in bytes).
|
||||
Message contents less than this value will not compress, even compression is enabled. The recommended
|
||||
message size of the smallest message before compression is 13bytes. Compress messages smaller than
|
||||
13bytes will expand the message size by 0.4% -->
|
||||
<contentCompressionThreshold>1000</contentCompressionThreshold>
|
||||
|
||||
</contentHandling>
|
||||
|
||||
<inboundEvents>
|
||||
<!--Number of parallel writers used to write content to message store. Increasing this
|
||||
value will speed-up the message receiving mechanism. But the load on the data store will
|
||||
increase.-->
|
||||
<parallelMessageWriters>1</parallelMessageWriters>
|
||||
|
||||
<!--Size of the Disruptor ring buffer for inbound event handling. For publishing at
|
||||
higher rates increasing the buffer size may give some advantage on keeping messages in
|
||||
memory and write.
|
||||
|
||||
NOTE: Buffer size should be a value of power of two -->
|
||||
<bufferSize>65536</bufferSize>
|
||||
|
||||
<!--Maximum batch size of the batch write operation for inbound messages. MB internals
|
||||
use Disruptor to batch events. Hence this batch size is set to avoid database requests
|
||||
with high load (with big batch sizes) to write messages. This need to be configured in
|
||||
high throughput messaging scenarios to regulate the hit on database from MB -->
|
||||
<messageWriterBatchSize>70</messageWriterBatchSize>
|
||||
|
||||
<!--Timeout for waiting for a queue purge event to end to get the purged count. Doesn't
|
||||
affect actual purging. If purge takes time, increasing the value will improve the
|
||||
possibility of retrieving the correct purged count. Having a lower value doesn't stop
|
||||
purge event. Getting the purged count is affected by this -->
|
||||
<purgedCountTimeout>180</purgedCountTimeout>
|
||||
|
||||
<!--Number of parallel writers used to write content to message store for transaction
|
||||
based publishing. Increasing this value will speedup commit duration for a transaction.
|
||||
But the load on the data store will increase.-->
|
||||
<transactionMessageWriters>1</transactionMessageWriters>
|
||||
</inboundEvents>
|
||||
|
||||
</performanceTuning>
|
||||
|
||||
<!-- This section is about how you want to view messaging statistics from the admin console and
|
||||
how you plan to interact with it. -->
|
||||
<managementConsole>
|
||||
<!--Maximum number of messages to be fetched per page using Andes message browser when browsing
|
||||
queues/dlc -->
|
||||
<messageBrowsePageSize>100</messageBrowsePageSize>
|
||||
|
||||
<!-- This property defines the maximum message content length that can be displayed at the
|
||||
management console when browsing queues. If the message length exceeds the value, a
|
||||
truncated content will be displayed with a statement "message content too large to display."
|
||||
at the end. default value is 100000 (can roughly display a 100KB message.)
|
||||
* NOTE : Increasing this value could cause delays when loading the message content page.-->
|
||||
<maximumMessageDisplayLength>100000</maximumMessageDisplayLength>
|
||||
|
||||
</managementConsole>
|
||||
|
||||
<!-- Memory and resource exhaustion is something we should prevent and recover from.
|
||||
This section allows you to specify the threshold at which to reduce/stop frequently intensive
|
||||
operations within MB temporarily. -->
|
||||
<!--
|
||||
highLimit - flow control is enabled when message chunk pending to be handled by inbound
|
||||
disruptor reaches above this limit
|
||||
lowLimit - flow control is disabled (if enabled) when message chunk pending to be handled
|
||||
by inbound disruptor reaches below this limit
|
||||
-->
|
||||
<flowControl>
|
||||
<!-- This is the global buffer limits which enable/disable the flow control globally -->
|
||||
<global>
|
||||
<lowLimit>800</lowLimit>
|
||||
<highLimit>8000</highLimit>
|
||||
</global>
|
||||
|
||||
<!-- This is the channel specific buffer limits which enable/disable the flow control locally.
|
||||
-->
|
||||
<bufferBased>
|
||||
<lowLimit>100</lowLimit>
|
||||
<highLimit>1000</highLimit>
|
||||
</bufferBased>
|
||||
</flowControl>
|
||||
|
||||
<slotManagement>
|
||||
<!--Set slot storage mode (RDBMS/HazelCast)-->
|
||||
<storage>RDBMS</storage>
|
||||
</slotManagement>
|
||||
|
||||
<!--
|
||||
Message broker keeps track of all messages it has received as groups. These groups are termed
|
||||
'Slots' (To know more information about Slots and message broker install please refer to online wiki).
|
||||
Size of a slot is loosely determined by the configuration <windowSize> (and the number of
|
||||
parallel publishers for specific topic/queue). Message broker cluster (or in single node) keeps
|
||||
track of slots which constitutes for a large part of operating state before the cluster went down.
|
||||
When first message broker node of the cluster starts up, it will read the database to recreate
|
||||
the internal state to previous state.
|
||||
-->
|
||||
<recovery>
|
||||
<!--
|
||||
There could be multiple storage queues worked before entire cluster (or single node) went down.
|
||||
We need to recover all remaining messages of each storage queue when first node startup and we can
|
||||
read remaining message concurrently of each storage queue. Default value to set here to 5. You can
|
||||
increase this value based on number of storage queues exist. Please use optimal value based on
|
||||
number of storage queues to speed up warm startup.
|
||||
-->
|
||||
<concurrentStorageQueueReads>5</concurrentStorageQueueReads>
|
||||
|
||||
<!-- Virtual host sync interval seconds in for the Virtual host syncing Task which will
|
||||
sync the Virtual host details across the cluster -->
|
||||
<vHostSyncTaskInterval>900</vHostSyncTaskInterval>
|
||||
</recovery>
|
||||
|
||||
</broker>
|
Loading…
Reference in new issue