ARTEMIS-3657 refactor address docs
Mainly refactoring the address docs. This commit has the following changes: - Remove examples for discouraged use-cases (e.g. using anycast and multicast on the same address). - Reword to use configuration terms wherever possible. For example, instead of saying "point-to-point" (which is not a configuration term) say "anycast". References to things like "point-to-point" and "publish-subscribe" are still there since users are familiar with these terms. They're just used much less often. - Remove duplicate explanation of exclusive queues. - Remove duplicate explanation of auto-create and auto-delete elements. - Re-create graphics and include the master SVGs for potential updates later. - Give non-destructive queues its own chapter. - Add details about specifying routing type using a message property. - Update the styling on the user manual's cover page to look better. - Lots of re-wording for clarity's sake. - Re-order sub-sections for clarity's sake. - Break up the address model and the settings documentation. The settings documentation is large and deserves its own chapter. The original anchor link is still available with a link to the new chapter. In general the address-specific documentation should be much more clear, concise, and consistent now.
|
@ -1,7 +1,5 @@
|
|||
![ActiveMQ Artemis logo](images/activemq-logo.png)
|
||||
|
||||
Apache ActiveMQ Artemis User Manual
|
||||
====================
|
||||
|
||||
The User manual is an in-depth manual on all aspects of Apache ActiveMQ Artemis
|
||||
<!-- using HTML directly here since this formatting isn't available in Markdown -->
|
||||
<img style="margin: auto; display: block" src="images/activemq-logo.png"></img>
|
||||
<H1 style="text-align: center">Apache ActiveMQ Artemis User Manual</H1>
|
||||
<div style="text-align: center">An in-depth manual on all aspects of Apache ActiveMQ Artemis</div>
|
||||
|
||||
|
|
|
@ -9,7 +9,9 @@
|
|||
* [Architecture](architecture.md)
|
||||
* [Using the Server](using-server.md)
|
||||
* [Upgrading](upgrading.md)
|
||||
* [Address Model](address-model.md)
|
||||
* Address
|
||||
* [Model](address-model.md)
|
||||
* [Settings](address-settings.md)
|
||||
* [Protocols and Interoperability](protocols-interoperability.md)
|
||||
* [AMQP](amqp.md)
|
||||
* [Broker Connections](amqp-broker-connections.md)
|
||||
|
@ -40,6 +42,7 @@
|
|||
* [Paging](paging.md)
|
||||
* [Scheduled Messages](scheduled-messages.md)
|
||||
* [Last-Value Queues](last-value-queues.md)
|
||||
* [Non-Destructive Queues](non-destructive-queues.md)
|
||||
* [Ring Queues](ring-queues.md)
|
||||
* [Retroactive Addresses](retroactive-addresses.md)
|
||||
* [Exclusive Queues](exclusive-queues.md)
|
||||
|
|
|
@ -0,0 +1,354 @@
|
|||
# Configuring Addresses and Queues via Address Settings
|
||||
|
||||
There are some attributes that are defined against an address wildcard rather
|
||||
than a specific address/queue. Here an example of an `address-setting` entry
|
||||
that would be found in the `broker.xml` file.
|
||||
|
||||
```xml
|
||||
<address-settings>
|
||||
<address-setting match="order.foo">
|
||||
<dead-letter-address>DLA</dead-letter-address>
|
||||
<auto-create-dead-letter-resources>false</auto-create-dead-letter-resources>
|
||||
<dead-letter-queue-prefix>DLQ.</dead-letter-queue-prefix>
|
||||
<dead-letter-queue-suffix></dead-letter-queue-suffix>
|
||||
<expiry-address>ExpiryQueue</expiry-address>
|
||||
<auto-create-expiry-resources>false</auto-create-expiry-resources>
|
||||
<expiry-queue-prefix>EXP.</expiry-queue-prefix>
|
||||
<expiry-queue-suffix></expiry-queue-suffix>
|
||||
<expiry-delay>123</expiry-delay>
|
||||
<redelivery-delay>5000</redelivery-delay>
|
||||
<redelivery-delay-multiplier>1.0</redelivery-delay-multiplier>
|
||||
<redelivery-collision-avoidance-factor>0.0</redelivery-collision-avoidance-factor>
|
||||
<max-redelivery-delay>10000</max-redelivery-delay>
|
||||
<max-delivery-attempts>3</max-delivery-attempts>
|
||||
<max-size-bytes>100000</max-size-bytes>
|
||||
<max-size-bytes-reject-threshold>-1</max-size-bytes-reject-threshold>
|
||||
<page-size-bytes>20000</page-size-bytes>
|
||||
<page-max-cache-size></page-max-cache-size>
|
||||
<address-full-policy>PAGE</address-full-policy>
|
||||
<message-counter-history-day-limit></message-counter-history-day-limit>
|
||||
<last-value-queue>true</last-value-queue> <!-- deprecated! see default-last-value-queue -->
|
||||
<default-last-value-queue>false</default-last-value-queue>
|
||||
<default-non-destructive>false</default-non-destructive>
|
||||
<default-exclusive-queue>false</default-exclusive-queue>
|
||||
<default-consumers-before-dispatch>0</default-consumers-before-dispatch>
|
||||
<default-delay-before-dispatch>-1</default-delay-before-dispatch>
|
||||
<redistribution-delay>0</redistribution-delay>
|
||||
<send-to-dla-on-no-route>true</send-to-dla-on-no-route>
|
||||
<slow-consumer-threshold>-1</slow-consumer-threshold>
|
||||
<slow-consumer-threshold-measurement-unit>MESSAGES_PER_SECOND</slow-consumer-threshold-measurement-unit>
|
||||
<slow-consumer-policy>NOTIFY</slow-consumer-policy>
|
||||
<slow-consumer-check-period>5</slow-consumer-check-period>
|
||||
<auto-create-queues>true</auto-create-queues>
|
||||
<auto-delete-queues>true</auto-delete-queues>
|
||||
<auto-delete-created-queues>false</auto-delete-created-queues>
|
||||
<auto-delete-queues-delay>0</auto-delete-queues-delay>
|
||||
<auto-delete-queues-message-count>0</auto-delete-queues-message-count>
|
||||
<config-delete-queues>OFF</config-delete-queues>
|
||||
<config-delete-diverts>OFF</config-delete-diverts>
|
||||
<auto-create-addresses>true</auto-create-addresses>
|
||||
<auto-delete-addresses>true</auto-delete-addresses>
|
||||
<auto-delete-addresses-delay>0</auto-delete-addresses-delay>
|
||||
<config-delete-addresses>OFF</config-delete-addresses>
|
||||
<management-browse-page-size>200</management-browse-page-size>
|
||||
<management-message-attribute-size-limit>256</management-message-attribute-size-limit>
|
||||
<default-purge-on-no-consumers>false</default-purge-on-no-consumers>
|
||||
<default-max-consumers>-1</default-max-consumers>
|
||||
<default-queue-routing-type></default-queue-routing-type>
|
||||
<default-address-routing-type></default-address-routing-type>
|
||||
<default-ring-size>-1</default-ring-size>
|
||||
<retroactive-message-count>0</retroactive-message-count>
|
||||
<enable-metrics>true</enable-metrics>
|
||||
<enable-ingress-timestamp>false</enable-ingress-timestamp>
|
||||
</address-setting>
|
||||
</address-settings>
|
||||
```
|
||||
|
||||
The idea with address settings, is you can provide a block of settings which
|
||||
will be applied against any addresses that match the string in the `match`
|
||||
attribute. In the above example the settings would only be applied to the
|
||||
address "order.foo" address but you can also use
|
||||
[wildcards](wildcard-syntax.md) to apply settings.
|
||||
|
||||
For example, if you used the `match` string `queue.#` the settings would be
|
||||
applied to all addresses which start with `queue.`
|
||||
|
||||
The meaning of the specific settings are explained fully throughout the user
|
||||
manual, however here is a brief description with a link to the appropriate
|
||||
chapter if available.
|
||||
|
||||
`dead-letter-address` is the address to which messages are sent when they
|
||||
exceed `max-delivery-attempts`. If no address is defined here then such
|
||||
messages will simply be discarded. Read more about [undelivered
|
||||
messages](undelivered-messages.md#configuring-dead-letter-addresses).
|
||||
|
||||
`auto-create-dead-letter-resources` determines whether or not the broker will
|
||||
automatically create the defined `dead-letter-address` and a corresponding
|
||||
dead-letter queue when a message is undeliverable. Read more in the chapter
|
||||
about [undelivered messages](undelivered-messages.md).
|
||||
|
||||
`dead-letter-queue-prefix` defines the prefix used for automatically created
|
||||
dead-letter queues. Read more in the chapter about
|
||||
[undelivered messages](undelivered-messages.md).
|
||||
|
||||
`dead-letter-queue-suffix` defines the suffix used for automatically created
|
||||
dead-letter queues. Read more in the chapter about
|
||||
[undelivered messages](undelivered-messages.md).
|
||||
|
||||
`expiry-address` defines where to send a message that has expired. If no
|
||||
address is defined here then such messages will simply be discarded. Read more
|
||||
about [message expiry](message-expiry.md#configuring-expiry-addresses).
|
||||
|
||||
`auto-create-expiry-resources` determines whether or not the broker will
|
||||
automatically create the defined `expiry-address` and a corresponding expiry
|
||||
queue when a message expired. Read more in the chapter about
|
||||
[undelivered messages](undelivered-messages.md).
|
||||
|
||||
`expiry-queue-prefix` defines the prefix used for automatically created expiry
|
||||
queues. Read more in the chapter about [message expiry](message-expiry.md).
|
||||
|
||||
`expiry-queue-suffix` defines the suffix used for automatically created expiry
|
||||
queues. Read more in the chapter about [message expiry](message-expiry.md).
|
||||
|
||||
`expiry-delay` defines the expiration time that will be used for messages which
|
||||
are using the default expiration time (i.e. 0). For example, if `expiry-delay`
|
||||
is set to "10" and a message which is using the default expiration time (i.e.
|
||||
0) arrives then its expiration time of "0" will be changed to "10." However, if
|
||||
a message which is using an expiration time of "20" arrives then its expiration
|
||||
time will remain unchanged. Setting `expiry-delay` to "-1" will disable this
|
||||
feature. The default is "-1". Read more about [message
|
||||
expiry](message-expiry.md#configuring-expiry-addresses).
|
||||
|
||||
`max-delivery-attempts` defines how many time a cancelled message can be
|
||||
redelivered before sending to the `dead-letter-address`. Read more about
|
||||
[undelivered
|
||||
messages](undelivered-messages.md#configuring-dead-letter-addresses).
|
||||
|
||||
`redelivery-delay` defines how long to wait before attempting redelivery of a
|
||||
cancelled message. Default is `0`. Read more about [undelivered
|
||||
messages](undelivered-messages.md#configuring-delayed-redelivery).
|
||||
|
||||
`redelivery-delay-multiplier` defines the number by which the
|
||||
`redelivery-delay` will be multiplied on each subsequent redelivery attempt.
|
||||
Default is `1.0`. Read more about [undelivered
|
||||
messages](undelivered-messages.md#configuring-delayed-redelivery).
|
||||
|
||||
`redelivery-collision-avoidance-factor` defines an additional factor used to
|
||||
calculate an adjustment to the `redelivery-delay` (up or down). Default is
|
||||
`0.0`. Valid values are between 0.0 and 1.0. Read more about [undelivered
|
||||
messages](undelivered-messages.md#configuring-delayed-redelivery).
|
||||
|
||||
`max-size-bytes`, `page-size-bytes`, & `page-max-cache-size` are used to
|
||||
configure paging on an address. This is explained
|
||||
[here](paging.md#configuration).
|
||||
|
||||
`max-size-bytes-reject-threshold` is used with the address full `BLOCK` policy,
|
||||
the maximum size (in bytes) an address can reach before messages start getting
|
||||
rejected. Works in combination with `max-size-bytes` **for AMQP clients only**.
|
||||
Default is `-1` (i.e. no limit).
|
||||
|
||||
`address-full-policy`. This attribute can have one of the following values:
|
||||
`PAGE`, `DROP`, `FAIL` or `BLOCK` and determines what happens when an address
|
||||
where `max-size-bytes` is specified becomes full. The default value is `PAGE`.
|
||||
If the value is `PAGE` then further messages will be paged to disk. If the
|
||||
value is `DROP` then further messages will be silently dropped. If the value is
|
||||
`FAIL` then further messages will be dropped and an exception will be thrown on
|
||||
the client-side. If the value is `BLOCK` then client message producers will
|
||||
block when they try and send further messages. See the [Flow
|
||||
Control](flow-control.md) and [Paging](paging.md) chapters for more info.
|
||||
|
||||
`message-counter-history-day-limit` is the number of days to keep message
|
||||
counter history for this address assuming that `message-counter-enabled` is
|
||||
`true`. Default is `0`.
|
||||
|
||||
`default-last-value-queue` defines whether a queue only uses last values or
|
||||
not. Default is `false`. This value can be overridden at the queue level using
|
||||
the `last-value` boolean. Read more about [last value
|
||||
queues](last-value-queues.md).
|
||||
|
||||
`default-exclusive-queue` defines whether a queue will serve only a single
|
||||
consumer. Default is `false`. This value can be overridden at the queue level
|
||||
using the `exclusive` boolean. Read more about [exclusive
|
||||
queues](exclusive-queues.md).
|
||||
|
||||
`default-consumers-before-dispatch` defines the number of consumers needed on a
|
||||
queue bound to the matching address before messages will be dispatched to those
|
||||
consumers. Default is `0`. This value can be overridden at the queue level using
|
||||
the `consumers-before-dispatch` boolean. This behavior can be tuned using
|
||||
`delay-before-dispatch` on the queue itself or by using the
|
||||
`default-delay-before-dispatch` address-setting.
|
||||
|
||||
`default-delay-before-dispatch` defines the number of milliseconds the broker
|
||||
will wait for the configured number of consumers to connect to the matching queue
|
||||
before it will begin to dispatch messages. Default is `-1` (wait forever).
|
||||
|
||||
`redistribution-delay` defines how long to wait when the last consumer is
|
||||
closed on a queue before redistributing any messages. Read more about
|
||||
[clusters](clusters.md#message-redistribution).
|
||||
|
||||
`send-to-dla-on-no-route`. If a message is sent to an address, but the server
|
||||
does not route it to any queues (e.g. there might be no queues bound to that
|
||||
address, or none of the queues have filters that match) then normally that
|
||||
message would be discarded. However, if this parameter is `true` then such a
|
||||
message will instead be sent to the `dead-letter-address` (DLA) for that
|
||||
address, if it exists.
|
||||
|
||||
`slow-consumer-threshold`. The minimum rate of message consumption allowed
|
||||
before a consumer is considered "slow." Measured in units specified by the
|
||||
slow-consumer-threshold-measurement-unit configuration option. Default is `-1`
|
||||
(i.e. disabled); any other value must be greater than 0 to ensure a queue
|
||||
has messages, and it is the actual consumer that is slow. A value of 0 will
|
||||
allow a consumer with no messages pending to be considered slow.
|
||||
Read more about [slow consumers](slow-consumers.md).
|
||||
|
||||
`slow-consumer-threshold-measurement-unit`. The units used to measure the
|
||||
slow-consumer-threshold. Valid options are:
|
||||
* MESSAGES_PER_SECOND
|
||||
* MESSAGES_PER_MINUTE
|
||||
* MESSAGES_PER_HOUR
|
||||
* MESSAGES_PER_DAY
|
||||
|
||||
If no unit is specified the default MESSAGES_PER_SECOND will be used.
|
||||
Read more about [slow consumers](slow-consumers.md).
|
||||
|
||||
`slow-consumer-policy`. What should happen when a slow consumer is detected.
|
||||
`KILL` will kill the consumer's connection (which will obviously impact any
|
||||
other client threads using that same connection). `NOTIFY` will send a
|
||||
CONSUMER\_SLOW management notification which an application could receive and
|
||||
take action with. Read more about [slow consumers](slow-consumers.md).
|
||||
|
||||
`slow-consumer-check-period`. How often to check for slow consumers on a
|
||||
particular queue. Measured in *seconds*. Default is `5`.
|
||||
|
||||
* Note: This should be at least 2x the maximum time it takes a consumer to process
|
||||
1 message. For example, if the slow-consumer-threshold is set to 1 and the
|
||||
slow-consumer-threshold-measurement-unit is set to MESSAGES_PER_MINUTE then this
|
||||
should be set to at least 2 x 60s i.e. 120s.
|
||||
Read more about [slow
|
||||
consumers](slow-consumers.md).
|
||||
|
||||
`auto-create-queues`. Whether or not the broker should automatically create a
|
||||
queue when a message is sent or a consumer tries to connect to a queue whose
|
||||
name fits the address `match`. Queues which are auto-created are durable,
|
||||
non-temporary, and non-transient. Default is `true`. **Note:** automatic queue
|
||||
creation does *not* work for the core client. The core API is a low-level API
|
||||
and is not meant to have such automation.
|
||||
|
||||
`auto-delete-queues`. Whether or not the broker should automatically delete
|
||||
auto-created queues when they have both 0 consumers and the message count is
|
||||
less than or equal to `auto-delete-queues-message-count`. Default is
|
||||
`true`.
|
||||
|
||||
`auto-delete-created-queues`. Whether or not the broker should automatically delete
|
||||
created queues when they have both 0 consumers and the message count is
|
||||
less than or equal to `auto-delete-queues-message-count`. Default is
|
||||
`false`.
|
||||
|
||||
`auto-delete-queues-delay`. How long to wait (in milliseconds) before deleting
|
||||
auto-created queues after the queue has 0 consumers and the message count is
|
||||
less than or equal to `auto-delete-queues-message-count`.
|
||||
Default is `0` (delete immediately). The broker's `address-queue-scan-period` controls
|
||||
how often (in milliseconds) queues are scanned for potential deletion. Use `-1`
|
||||
to disable scanning. The default scan value is `30000`.
|
||||
|
||||
`auto-delete-queues-message-count`. The message count that the queue must be
|
||||
less than or equal to before deleting auto-created queues.
|
||||
To disable message count check `-1` can be set.
|
||||
Default is `0` (empty queue).
|
||||
|
||||
**Note:** the above auto-delete address settings can also be configured
|
||||
individually at the queue level when a client auto creates the queue.
|
||||
|
||||
For Core API it is exposed in createQueue methods.
|
||||
|
||||
For Core JMS you can set it using the destination queue attributes
|
||||
`my.destination?auto-delete=true&auto-delete-delay=120000&auto-delete-message-count=-1`
|
||||
|
||||
`config-delete-queues`. How the broker should handle queues deleted on config
|
||||
reload, by delete policy: `OFF` or `FORCE`. Default is `OFF`. Read more about
|
||||
[configuration reload](config-reload.md).
|
||||
|
||||
`config-delete-diverts`. How the broker should handle diverts deleted on config
|
||||
reload, by delete policy: `OFF` or `FORCE`. Default is `OFF`. Read more about
|
||||
[configuration reload](config-reload.md).
|
||||
`auto-create-addresses`. Whether or not the broker should automatically create
|
||||
an address when a message is sent to or a consumer tries to consume from a
|
||||
queue which is mapped to an address whose name fits the address `match`.
|
||||
Default is `true`. **Note:** automatic address creation does *not* work for the
|
||||
core client. The core API is a low-level API and is not meant to have such
|
||||
automation.
|
||||
|
||||
`auto-delete-addresses`. Whether or not the broker should automatically delete
|
||||
auto-created addresses once the address no longer has any queues. Default is
|
||||
`true`.
|
||||
|
||||
`auto-delete-addresses-delay`. How long to wait (in milliseconds) before
|
||||
deleting auto-created addresses after they no longer have any queues. Default
|
||||
is `0` (delete immediately). The broker's `address-queue-scan-period` controls
|
||||
how often (in milliseconds) addresses are scanned for potential deletion. Use
|
||||
`-1` to disable scanning. The default scan value is `30000`.
|
||||
|
||||
`config-delete-addresses`. How the broker should handle addresses deleted on
|
||||
config reload, by delete policy: `OFF` or `FORCE`. Default is `OFF`. Read more
|
||||
about [configuration reload](config-reload.md).
|
||||
|
||||
`management-browse-page-size` is the number of messages a management resource
|
||||
can browse. This is relevant for the `browse, list and count-with-filter` management
|
||||
methods exposed on the queue control. Default is `200`.
|
||||
|
||||
`management-message-attribute-size-limit` is the number of bytes collected from
|
||||
the message for browse. This is relevant for the `browse and list` management
|
||||
methods exposed on the queue control. Message attributes longer than this value
|
||||
appear truncated. Default is `256`. Use `-1` to switch this limit off. Note that
|
||||
memory needs to be allocated for all messages that are visible at a given moment.
|
||||
Setting this value too high may impact the browser stability due to the large
|
||||
amount of memory that may be required to browse through many messages.
|
||||
|
||||
`default-purge-on-no-consumers` defines a queue's default
|
||||
`purge-on-no-consumers` setting if none is provided on the queue itself.
|
||||
Default is `false`. This value can be overridden at the queue level using the
|
||||
`purge-on-no-consumers` boolean. Read more about [this
|
||||
functionality](#non-durable-subscription-queue).
|
||||
|
||||
`default-max-consumers` defines a queue's default `max-consumers` setting if
|
||||
none is provided on the queue itself. Default is `-1` (i.e. no limit). This
|
||||
value can be overridden at the queue level using the `max-consumers` boolean.
|
||||
Read more about [this
|
||||
functionality](#shared-durable-subscription-queue-using-max-consumers).
|
||||
|
||||
`default-queue-routing-type` defines the routing-type for an auto-created queue
|
||||
if the broker is unable to determine the routing-type based on the client
|
||||
and/or protocol semantics. Default is `MULTICAST`. Read more about [routing
|
||||
types](#routing-type).
|
||||
|
||||
`default-address-routing-type` defines the routing-type for an auto-created
|
||||
address if the broker is unable to determine the routing-type based on the
|
||||
client and/or protocol semantics. Default is `MULTICAST`. Read more about
|
||||
[routing types](#routing-type).
|
||||
|
||||
`default-consumer-window-size` defines the default `consumerWindowSize` value
|
||||
for a `CORE` protocol consumer, if not defined the default will be set to
|
||||
1 MiB (1024 * 1024 bytes). The consumer will use this value as the window size
|
||||
if the value is not set on the client. Read more about
|
||||
[flow control](flow-control.md).
|
||||
|
||||
`default-ring-size` defines the default `ring-size` value for any matching queue
|
||||
which doesn't have `ring-size` explicitly defined. If not defined the default will
|
||||
be set to -1. Read more about [ring queues](ring-queues.md).
|
||||
|
||||
`retroactive-message-count` defines the number of messages to preserve for future
|
||||
queues created on the matching address. Defaults to 0. Read more about
|
||||
[retroactive addresses](retroactive-addresses.md).
|
||||
|
||||
`enable-metrics` determines whether or not metrics will be published to any
|
||||
configured metrics plugin for the matching address. Default is `true`. Read more
|
||||
about [metrics](metrics.md).
|
||||
|
||||
`enable-ingress-timestamp` determines whether or not the broker will add its time
|
||||
to messages sent to the matching address. When `true` the exact behavior will
|
||||
depend on the specific protocol in use. For AMQP messages the broker will add a
|
||||
`long` *message annotation* named `x-opt-ingress-time`. For core messages (used by
|
||||
the core and OpenWire protocols) the broker will add a long property named
|
||||
`_AMQ_INGRESS_TIMESTAMP`. For STOMP messages the broker will add a frame header
|
||||
named `ingress-timestamp`. The value will be the number of milliseconds since the
|
||||
[epoch](https://en.wikipedia.org/wiki/Unix_time). Default is `false`.
|
|
@ -837,7 +837,7 @@ By default, message redistribution is disabled.
|
|||
|
||||
Message redistribution can be configured on a per address basis, by
|
||||
specifying the redistribution delay in the address settings. For more
|
||||
information on configuring address settings, please see [Configuring Addresses and Queues via Address Settings](address-model.md#configuring-addresses-and-queues-via-address-settings).
|
||||
information on configuring address settings, please see [Configuring Addresses and Queues via Address Settings](address-settings.md).
|
||||
|
||||
Here's an address settings snippet from `broker.xml`
|
||||
showing how message redistribution is enabled for a set of queues:
|
||||
|
|
|
@ -97,7 +97,7 @@ Name | Description | Default
|
|||
[acceptors](configuring-transports.md#acceptors) | a list of remoting acceptors | n/a
|
||||
[acceptors.acceptor](configuring-transports.md#acceptors) | Each acceptor is composed for just an URL | n/a
|
||||
[addresses](address-model.md#basic-address-configuration) | [a list of addresses](#address-type) | n/a
|
||||
[address-settings](address-model.md#configuring-addresses-and-queues-via-address-settings) | [a list of address-setting](#address-setting-type) | n/a
|
||||
[address-settings](address-settings.md) | [a list of address-setting](#address-setting-type) | n/a
|
||||
[allow-failback](ha.md#failing-back-to-live-server)| Should stop backup on live restart. | `true`
|
||||
[amqp-use-core-subscription-naming](amqp.md) | If true uses CORE queue naming convention for AMQP. | `false`
|
||||
[async-connection-execution-enabled](connection-ttl.md) | If False delivery would be always asynchronous. | `true`
|
||||
|
@ -158,7 +158,7 @@ log-delegate-factory-class-name | **deprecated** the name of the factory class t
|
|||
[message-expiry-scan-period](message-expiry.md#configuring-the-expiry-reaper-thread) | how often (in ms) to scan for expired messages. | 30000
|
||||
[message-expiry-thread-priority](message-expiry.md#configuring-the-expiry-reaper-thread)| **deprecated** the priority of the thread expiring messages. | 3
|
||||
[metrics-plugin](metrics.md) | [a plugin to export metrics](#metrics-plugin-type) | n/a
|
||||
[address-queue-scan-period](address-model.md#configuring-addresses-and-queues-via-address-settings) | how often (in ms) to scan for addresses & queues that should be removed. | 30000
|
||||
[address-queue-scan-period](address-settings.md) | how often (in ms) to scan for addresses & queues that should be removed. | 30000
|
||||
name | node name; used in topology notifications if set. | n/a
|
||||
[password-codec](masking-passwords.md) | the name of the class (and optional configuration properties) used to decode masked passwords. Only valid when `mask-password` is `true`. | n/a
|
||||
[page-max-concurrent-io](paging.md) | The max number of concurrent reads allowed on paging. | 5
|
||||
|
@ -235,19 +235,19 @@ Name | Description | Default
|
|||
[slow-consumer-threshold](slow-consumers.md) | Min rate of msgs/sec consumed before a consumer is considered "slow" | -1
|
||||
[slow-consumer-policy](slow-consumers.md) | What to do when "slow" consumer is detected | `NOTIFY`
|
||||
[slow-consumer-check-period](slow-consumers.md) | How often to check for "slow" consumers | 5
|
||||
[auto-create-jms-queues](address-model.md#configuring-addresses-and-queues-via-address-settings)| **deprecated** Create JMS queues automatically; see `auto-create-queues` & `auto-create-addresses` | `true`
|
||||
[auto-delete-jms-queues](address-model.md#configuring-addresses-and-queues-via-address-settings)| **deprecated** Delete JMS queues automatically; see `auto-create-queues` & `auto-create-addresses` | `true`
|
||||
[auto-create-jms-topics](address-model.md#configuring-addresses-and-queues-via-address-settings)| **deprecated** Create JMS topics automatically; see `auto-create-queues` & `auto-create-addresses` | `true`
|
||||
[auto-delete-jms-topics](address-model.md#configuring-addresses-and-queues-via-address-settings)| **deprecated** Delete JMS topics automatically; see `auto-create-queues` & `auto-create-addresses` | `true`
|
||||
[auto-create-queues](address-model.md#configuring-addresses-and-queues-via-address-settings) | Create queues automatically | `true`
|
||||
[auto-delete-queues](address-model.md#configuring-addresses-and-queues-via-address-settings) | Delete auto-created queues automatically | `true`
|
||||
[auto-delete-created-queues](address-model.md#configuring-addresses-and-queues-via-address-settings) | Delete created queues automatically | `false`
|
||||
[auto-delete-queues-delay](address-model.md#configuring-addresses-and-queues-via-address-settings) | Delay for deleting auto-created queues | 0
|
||||
[auto-delete-queues-message-count](address-model.md#configuring-addresses-and-queues-via-address-settings) | Message count the queue must be at or below before it can be auto deleted | 0
|
||||
[auto-create-jms-queues](address-settings.md)| **deprecated** Create JMS queues automatically; see `auto-create-queues` & `auto-create-addresses` | `true`
|
||||
[auto-delete-jms-queues](address-settings.md)| **deprecated** Delete JMS queues automatically; see `auto-create-queues` & `auto-create-addresses` | `true`
|
||||
[auto-create-jms-topics](address-settings.md)| **deprecated** Create JMS topics automatically; see `auto-create-queues` & `auto-create-addresses` | `true`
|
||||
[auto-delete-jms-topics](address-settings.md)| **deprecated** Delete JMS topics automatically; see `auto-create-queues` & `auto-create-addresses` | `true`
|
||||
[auto-create-queues](address-settings.md) | Create queues automatically | `true`
|
||||
[auto-delete-queues](address-settings.md) | Delete auto-created queues automatically | `true`
|
||||
[auto-delete-created-queues](address-settings.md) | Delete created queues automatically | `false`
|
||||
[auto-delete-queues-delay](address-settings.md) | Delay for deleting auto-created queues | 0
|
||||
[auto-delete-queues-message-count](address-settings.md) | Message count the queue must be at or below before it can be auto deleted | 0
|
||||
[config-delete-queues](config-reload.md)| How to deal with queues deleted from XML at runtime| `OFF`
|
||||
[auto-create-addresses](address-model.md#configuring-addresses-and-queues-via-address-settings) | Create addresses automatically | `true`
|
||||
[auto-delete-addresses](address-model.md#configuring-addresses-and-queues-via-address-settings) | Delete auto-created addresses automatically | `true`
|
||||
[auto-delete-addresses-delay](address-model.md#configuring-addresses-and-queues-via-address-settings) | Delay for deleting auto-created addresses | 0
|
||||
[auto-create-addresses](address-settings.md) | Create addresses automatically | `true`
|
||||
[auto-delete-addresses](address-settings.md) | Delete auto-created addresses automatically | `true`
|
||||
[auto-delete-addresses-delay](address-settings.md) | Delay for deleting auto-created addresses | 0
|
||||
[config-delete-addresses](config-reload.md) | How to deal with addresses deleted from XML at runtime | `OFF`
|
||||
[config-delete-diverts](config-reload.md) | How to deal with diverts deleted from XML at runtime | `OFF`
|
||||
[management-browse-page-size]() | Number of messages a management resource can browse| 200
|
||||
|
|
|
@ -16,7 +16,7 @@ API is simpler than the JMS API, since we remove distinctions between queues,
|
|||
topics and subscriptions. We'll discuss each of the major core messaging
|
||||
concepts in turn, but to see the API in detail please consult the Javadoc.
|
||||
|
||||
Also refer to the [addressing model](address-model.md) chapter for a high-level
|
||||
Also refer to the [address model](address-model.md) chapter for a high-level
|
||||
overview of these concepts as well as configuration details.
|
||||
|
||||
### Message
|
||||
|
|
|
@ -0,0 +1,910 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="1050.8998"
|
||||
height="289.59723"
|
||||
viewBox="0 0 278.0504 76.622603"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
sodipodi:docname="anycast.svg"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
|
||||
inkscape:export-filename="/home/jbertram/Desktop/diagram/anycast.png"
|
||||
inkscape:export-xdpi="93.542694"
|
||||
inkscape:export-ydpi="93.542694">
|
||||
<defs
|
||||
id="defs2">
|
||||
<marker
|
||||
inkscape:stockid="Arrow2Lend"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="marker5205"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
id="path5203"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
|
||||
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:isstock="true"
|
||||
style="overflow:visible"
|
||||
id="marker5026"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow2Lend"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
|
||||
id="path5024"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="Arrow2Lend"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="marker4948"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
id="path4946"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
|
||||
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="Arrow2Lend"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="marker7781"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
id="path7779"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
|
||||
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<linearGradient
|
||||
osb:paint="solid"
|
||||
id="linearGradient6065">
|
||||
<stop
|
||||
id="stop6063"
|
||||
offset="0"
|
||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||
</linearGradient>
|
||||
<filter
|
||||
id="filter5529-2"
|
||||
inkscape:label="Drop Shadow"
|
||||
style="color-interpolation-filters:sRGB">
|
||||
<feFlood
|
||||
id="feFlood5519-5"
|
||||
result="flood"
|
||||
flood-color="rgb(0,0,0)"
|
||||
flood-opacity="0.498039" />
|
||||
<feComposite
|
||||
id="feComposite5521-4"
|
||||
result="composite1"
|
||||
operator="in"
|
||||
in2="SourceGraphic"
|
||||
in="flood" />
|
||||
<feGaussianBlur
|
||||
id="feGaussianBlur5523-4"
|
||||
result="blur"
|
||||
stdDeviation="0.2"
|
||||
in="composite1" />
|
||||
<feOffset
|
||||
id="feOffset5525-9"
|
||||
result="offset"
|
||||
dy="1"
|
||||
dx="1" />
|
||||
<feComposite
|
||||
id="feComposite5527-9"
|
||||
result="composite2"
|
||||
operator="over"
|
||||
in2="offset"
|
||||
in="SourceGraphic" />
|
||||
</filter>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.9555625"
|
||||
inkscape:cx="392.55245"
|
||||
inkscape:cy="188.0961"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:snap-object-midpoints="true"
|
||||
inkscape:snap-to-guides="true"
|
||||
inkscape:snap-grids="true"
|
||||
units="px"
|
||||
inkscape:connector-spacing="0"
|
||||
inkscape:snap-midpoints="true"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2056"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:snap-global="false">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid14528" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-9.3889286,-56.52659)">
|
||||
<rect
|
||||
id="rect6098"
|
||||
width="135.59023"
|
||||
height="75.48494"
|
||||
x="70.973747"
|
||||
y="57.095421"
|
||||
style="fill:none;stroke:#000000;stroke-width:1.13766205;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
inkscape:transform-center-x="-0.64669425"
|
||||
inkscape:transform-center-y="14.153426" />
|
||||
<g
|
||||
id="g14865">
|
||||
<g
|
||||
transform="matrix(0.06217178,-0.0358949,0.0358949,0.06217178,35.404192,80.68931)"
|
||||
style="display:inline;fill:none;fill-opacity:1;stroke:#737373;stroke-opacity:1"
|
||||
id="g848">
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#737373;stroke-width:4.08199978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 37.797618,159.98364 43.544066,-37.68631 13.34135,10.63045 13.341346,-10.63045 43.54406,37.68631"
|
||||
id="path837"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
id="rect18-30"
|
||||
width="113.77083"
|
||||
height="72.382446"
|
||||
x="37.797619"
|
||||
y="87.601196"
|
||||
style="display:inline;fill:none;fill-opacity:1;stroke:#737373;stroke-width:3.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="display:inline;fill:none;fill-opacity:1;stroke:#737373;stroke-width:4.08199978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 37.797618,87.601196 94.683034,132.92778 151.56845,87.601196"
|
||||
id="path4533-3"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<g
|
||||
transform="translate(-15.270238,0.43467262)"
|
||||
id="g6823">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
x="23.8125"
|
||||
y="97.806541"
|
||||
id="text6090"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan6088"
|
||||
x="23.8125"
|
||||
y="97.806541"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu Bold';stroke-width:0.26458332">Producer</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="23.8125"
|
||||
y="111.03571"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu Bold';stroke-width:0.26458332"
|
||||
id="tspan6092" /></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
x="24.36978"
|
||||
y="105.17709"
|
||||
id="text6096"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan6094"
|
||||
x="24.36978"
|
||||
y="105.17709"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic';stroke-width:0.26458332">address.foo</tspan></text>
|
||||
</g>
|
||||
<text
|
||||
id="text7135"
|
||||
y="87.029099"
|
||||
x="44.08987"
|
||||
style="font-style:normal;font-weight:normal;font-size:5.64444447px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-size:5.64444447px;stroke-width:0.26458332"
|
||||
y="87.029099"
|
||||
x="44.08987"
|
||||
id="tspan7133"
|
||||
sodipodi:role="line">5</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g14818">
|
||||
<g
|
||||
transform="matrix(0.06217178,-0.0358949,0.0358949,0.06217178,265.56122,98.951598)"
|
||||
style="display:inline;fill:none;fill-opacity:1;stroke:#737373;stroke-opacity:1"
|
||||
id="g848-1">
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#737373;stroke-width:4.08199978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 37.797618,159.98364 43.544066,-37.68631 13.34135,10.63045 13.341346,-10.63045 43.54406,37.68631"
|
||||
id="path837-3"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
id="rect18-30-1"
|
||||
width="113.77083"
|
||||
height="72.382446"
|
||||
x="37.797619"
|
||||
y="87.601196"
|
||||
style="display:inline;fill:none;fill-opacity:1;stroke:#737373;stroke-width:3.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="display:inline;fill:none;fill-opacity:1;stroke:#737373;stroke-width:4.08199978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 37.797618,87.601196 94.683034,132.92778 151.56845,87.601196"
|
||||
id="path4533-3-1"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.06217178,-0.0358949,0.0358949,0.06217178,265.56122,65.649984)"
|
||||
style="display:inline;fill:none;fill-opacity:1;stroke:#737373;stroke-opacity:1"
|
||||
id="g848-9">
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#737373;stroke-width:4.08199978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 37.797618,159.98364 43.544066,-37.68631 13.34135,10.63045 13.341346,-10.63045 43.54406,37.68631"
|
||||
id="path837-9"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
id="rect18-30-0"
|
||||
width="113.77083"
|
||||
height="72.382446"
|
||||
x="37.797619"
|
||||
y="87.601196"
|
||||
style="display:inline;fill:none;fill-opacity:1;stroke:#737373;stroke-width:3.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="display:inline;fill:none;fill-opacity:1;stroke:#737373;stroke-width:4.08199978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 37.797618,87.601196 94.683034,132.92778 151.56845,87.601196"
|
||||
id="path4533-3-8"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<g
|
||||
transform="translate(205.09069,-16.184583)"
|
||||
id="g6823-2">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
x="23.8125"
|
||||
y="97.806541"
|
||||
id="text6090-1"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan6088-0"
|
||||
x="23.8125"
|
||||
y="97.806541"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu Bold';stroke-width:0.26458332">Consumer 1</tspan><tspan
|
||||
id="tspan7002"
|
||||
sodipodi:role="line"
|
||||
x="23.8125"
|
||||
y="111.03571"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu Bold';stroke-width:0.26458332" /><tspan
|
||||
sodipodi:role="line"
|
||||
x="23.8125"
|
||||
y="124.26488"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu Bold';stroke-width:0.26458332"
|
||||
id="tspan6092-5" /></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
x="24.36978"
|
||||
y="105.17709"
|
||||
id="text6096-1"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan6094-1"
|
||||
x="24.36978"
|
||||
y="105.17709"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic';stroke-width:0.26458332">q1</tspan></text>
|
||||
</g>
|
||||
<text
|
||||
id="text7135-0"
|
||||
y="71.768509"
|
||||
x="274.26361"
|
||||
style="font-style:normal;font-weight:normal;font-size:5.64444447px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-size:5.64444447px;stroke-width:0.26458332"
|
||||
y="71.768509"
|
||||
x="274.26361"
|
||||
id="tspan7133-2"
|
||||
sodipodi:role="line">1</tspan></text>
|
||||
<g
|
||||
transform="translate(205.09069,18.589226)"
|
||||
id="g6823-2-0">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
x="23.8125"
|
||||
y="97.806541"
|
||||
id="text6090-1-8"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan6088-0-5"
|
||||
x="23.8125"
|
||||
y="97.806541"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu Bold';stroke-width:0.26458332">Consumer 2</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="23.8125"
|
||||
y="111.03571"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu Bold';stroke-width:0.26458332"
|
||||
id="tspan6092-5-0" /></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
x="24.36978"
|
||||
y="105.17709"
|
||||
id="text6096-1-6"><tspan
|
||||
id="tspan7004"
|
||||
sodipodi:role="line"
|
||||
x="24.36978"
|
||||
y="105.17709"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic';stroke-width:0.26458332">q1</tspan></text>
|
||||
</g>
|
||||
<text
|
||||
id="text7135-1"
|
||||
y="105.35093"
|
||||
x="274.15298"
|
||||
style="font-style:normal;font-weight:normal;font-size:5.64444447px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-size:5.64444447px;stroke-width:0.26458332"
|
||||
y="105.35093"
|
||||
x="274.15298"
|
||||
id="tspan7133-0"
|
||||
sodipodi:role="line">2</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g14851">
|
||||
<g
|
||||
transform="translate(8.334375,5.0270833)"
|
||||
id="g8513">
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:0.9379037;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect6825"
|
||||
width="46.581741"
|
||||
height="13.759413"
|
||||
x="73.617912"
|
||||
y="97.806267" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:1.25;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332;"
|
||||
x="74.899323"
|
||||
y="104.98775"
|
||||
id="text6829"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan6827"
|
||||
x="74.899323"
|
||||
y="104.98775"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;stroke-width:0.26458332;">address.foo</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
x="75.120499"
|
||||
y="109.63036"
|
||||
id="text7309"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan7307"
|
||||
x="75.120499"
|
||||
y="109.63036"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic';stroke-width:0.26458332">anycast</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.19798134;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker7781)"
|
||||
d="m 106.13101,102.96086 v -5.523177 h 39.83833"
|
||||
id="path7410"
|
||||
inkscape:connector-curvature="0" />
|
||||
<g
|
||||
id="layer2-3"
|
||||
inkscape:label="Layer 2"
|
||||
style="display:inline"
|
||||
transform="matrix(0.43046721,0,0,0.43046721,55.110218,11.154311)">
|
||||
<g
|
||||
id="g5073-6"
|
||||
style="filter:url(#filter5529-2)"
|
||||
inkscape:export-xdpi="49.963245"
|
||||
inkscape:export-ydpi="49.963245">
|
||||
<path
|
||||
inkscape:transform-center-x="3.3564472e-06"
|
||||
d="m 64.697193,153.55181 -8.351848,-0.0491 -4.133392,-7.25747 4.218456,-7.20836 8.351848,0.0491 4.133392,7.25746 z"
|
||||
inkscape:randomized="0"
|
||||
inkscape:rounded="0"
|
||||
inkscape:flatsided="true"
|
||||
sodipodi:arg2="1.5766766"
|
||||
sodipodi:arg1="1.0530778"
|
||||
sodipodi:r2="6.0473599"
|
||||
sodipodi:r1="8.3519926"
|
||||
sodipodi:cy="146.29434"
|
||||
sodipodi:cx="60.563801"
|
||||
sodipodi:sides="6"
|
||||
id="path4883-0"
|
||||
style="fill:#ffffff;stroke-width:0.3946985;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
sodipodi:type="star" />
|
||||
<path
|
||||
inkscape:transform-center-x="3.3564472e-06"
|
||||
d="m 52.632137,146.55309 -8.351848,-0.0491 -4.133392,-7.25747 4.218456,-7.20835 8.351848,0.0491 4.133392,7.25747 z"
|
||||
inkscape:randomized="0"
|
||||
inkscape:rounded="0"
|
||||
inkscape:flatsided="true"
|
||||
sodipodi:arg2="1.5766766"
|
||||
sodipodi:arg1="1.0530778"
|
||||
sodipodi:r2="6.0473604"
|
||||
sodipodi:r1="8.3519926"
|
||||
sodipodi:cy="139.29562"
|
||||
sodipodi:cx="48.498745"
|
||||
sodipodi:sides="6"
|
||||
id="path4883-4-5"
|
||||
style="display:inline;fill:#ffffff;stroke-width:0.3946985;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
sodipodi:type="star" />
|
||||
<path
|
||||
inkscape:transform-center-x="3.3564472e-06"
|
||||
d="m 64.771263,139.58889 -8.351848,-0.0491 -4.133392,-7.25747 4.218455,-7.20836 8.351849,0.0491 4.133392,7.25747 z"
|
||||
inkscape:randomized="0"
|
||||
inkscape:rounded="0"
|
||||
inkscape:flatsided="true"
|
||||
sodipodi:arg2="1.5766766"
|
||||
sodipodi:arg1="1.0530778"
|
||||
sodipodi:r2="6.0473609"
|
||||
sodipodi:r1="8.3519926"
|
||||
sodipodi:cy="132.33142"
|
||||
sodipodi:cx="60.637871"
|
||||
sodipodi:sides="6"
|
||||
id="path4883-4-2-02"
|
||||
style="display:inline;fill:#ffffff;stroke-width:0.3946985;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
sodipodi:type="star" />
|
||||
<path
|
||||
inkscape:transform-center-x="3.3564472e-06"
|
||||
d="m 64.765488,125.70228 -8.351849,-0.0491 -4.133392,-7.25747 4.218456,-7.20836 8.351848,0.0491 4.133393,7.25747 z"
|
||||
inkscape:randomized="0"
|
||||
inkscape:rounded="0"
|
||||
inkscape:flatsided="true"
|
||||
sodipodi:arg2="1.5766766"
|
||||
sodipodi:arg1="1.0530778"
|
||||
sodipodi:r2="6.0473609"
|
||||
sodipodi:r1="8.3519926"
|
||||
sodipodi:cy="118.44481"
|
||||
sodipodi:cx="60.632095"
|
||||
sodipodi:sides="6"
|
||||
id="path4883-4-2-0-9"
|
||||
style="display:inline;fill:#ffffff;stroke-width:0.3946985;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
sodipodi:type="star" />
|
||||
<path
|
||||
inkscape:transform-center-x="3.3564472e-06"
|
||||
d="m 52.696037,132.67611 -8.351848,-0.0491 -4.133392,-7.25747 4.218456,-7.20836 8.351848,0.0491 4.133392,7.25747 z"
|
||||
inkscape:randomized="0"
|
||||
inkscape:rounded="0"
|
||||
inkscape:flatsided="true"
|
||||
sodipodi:arg2="1.5766766"
|
||||
sodipodi:arg1="1.0530778"
|
||||
sodipodi:r2="6.0473609"
|
||||
sodipodi:r1="8.3519926"
|
||||
sodipodi:cy="125.41864"
|
||||
sodipodi:cx="48.562645"
|
||||
sodipodi:sides="6"
|
||||
id="path4883-4-2-0-0-4"
|
||||
style="display:inline;fill:#ffffff;stroke-width:0.3946985;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
sodipodi:type="star" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="layer1-35"
|
||||
inkscape:label="Layer 1"
|
||||
style="display:inline"
|
||||
transform="matrix(0.43046721,0,0,0.43046721,55.110218,11.154311)">
|
||||
<path
|
||||
inkscape:export-ydpi="49.963245"
|
||||
inkscape:export-xdpi="49.963245"
|
||||
transform="matrix(0.0720575,0.01553345,-0.01553345,0.0720575,-59.031055,63.795776)"
|
||||
d="m 1849.1387,640.35252 -96.8242,20.55802 -66.2158,-73.57316 30.6083,-94.13118 96.8242,-20.55802 66.2158,73.57316 z"
|
||||
inkscape:randomized="0"
|
||||
inkscape:rounded="0"
|
||||
inkscape:flatsided="true"
|
||||
sodipodi:arg2="1.36158"
|
||||
sodipodi:arg1="0.83798123"
|
||||
sodipodi:r2="49.49128"
|
||||
sodipodi:r1="98.982559"
|
||||
sodipodi:cy="566.77936"
|
||||
sodipodi:cx="1782.9229"
|
||||
sodipodi:sides="6"
|
||||
id="path5019-02-9-1"
|
||||
style="opacity:1;fill:#c12766;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
sodipodi:type="star" />
|
||||
<path
|
||||
inkscape:export-ydpi="49.963245"
|
||||
inkscape:export-xdpi="49.963245"
|
||||
transform="matrix(0.0720575,0.01553345,-0.01553345,0.0720575,-71.170179,70.759985)"
|
||||
d="m 1849.1387,640.35252 -96.8242,20.55802 -66.2158,-73.57316 30.6083,-94.13118 96.8242,-20.55802 66.2158,73.57316 z"
|
||||
inkscape:randomized="0"
|
||||
inkscape:rounded="0"
|
||||
inkscape:flatsided="true"
|
||||
sodipodi:arg2="1.36158"
|
||||
sodipodi:arg1="0.83798123"
|
||||
sodipodi:r2="49.49128"
|
||||
sodipodi:r1="98.982559"
|
||||
sodipodi:cy="566.77936"
|
||||
sodipodi:cx="1782.9229"
|
||||
sodipodi:sides="6"
|
||||
id="path5019-0-5-1-7"
|
||||
style="opacity:1;fill:#3e489f;fill-opacity:1;stroke:none;stroke-width:15;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
sodipodi:type="star" />
|
||||
<path
|
||||
inkscape:export-ydpi="49.963245"
|
||||
inkscape:export-xdpi="49.963245"
|
||||
inkscape:transform-center-y="-96.786465"
|
||||
inkscape:transform-center-x="198.10335"
|
||||
transform="matrix(0.0720575,0.01553345,-0.01553345,0.0720575,-59.10649,77.758293)"
|
||||
d="m 1849.1387,640.35252 -96.8242,20.55802 -66.2158,-73.57316 30.6083,-94.13118 96.8242,-20.55802 66.2158,73.57316 z"
|
||||
inkscape:randomized="0"
|
||||
inkscape:rounded="0"
|
||||
inkscape:flatsided="true"
|
||||
sodipodi:arg2="1.36158"
|
||||
sodipodi:arg1="0.83798123"
|
||||
sodipodi:r2="49.49128"
|
||||
sodipodi:r1="98.982559"
|
||||
sodipodi:cy="566.77936"
|
||||
sodipodi:cx="1782.9229"
|
||||
sodipodi:sides="6"
|
||||
id="path5019-4-1-2-4"
|
||||
style="opacity:1;fill:#714099;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
sodipodi:type="star" />
|
||||
<path
|
||||
inkscape:export-ydpi="49.963245"
|
||||
inkscape:export-xdpi="49.963245"
|
||||
transform="matrix(0.0720575,0.01553345,-0.01553345,0.0720575,-71.106281,56.88299)"
|
||||
d="m 1849.1387,640.35252 -96.8242,20.55802 -66.2158,-73.57316 30.6083,-94.13118 96.8242,-20.55802 66.2158,73.57316 z"
|
||||
inkscape:randomized="0"
|
||||
inkscape:rounded="0"
|
||||
inkscape:flatsided="true"
|
||||
sodipodi:arg2="1.36158"
|
||||
sodipodi:arg1="0.83798123"
|
||||
sodipodi:r2="49.49128"
|
||||
sodipodi:r1="98.982559"
|
||||
sodipodi:cy="566.77936"
|
||||
sodipodi:cx="1782.9229"
|
||||
sodipodi:sides="6"
|
||||
id="path5019-0-4-9-8-3"
|
||||
style="opacity:1;fill:#78932c;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
sodipodi:type="star" />
|
||||
<path
|
||||
inkscape:export-ydpi="49.963245"
|
||||
inkscape:export-xdpi="49.963245"
|
||||
transform="matrix(0.0720575,0.01553345,-0.01553345,0.0720575,-59.036828,49.909167)"
|
||||
d="m 1849.1387,640.35252 -96.8242,20.55802 -66.2158,-73.57316 30.6083,-94.13118 96.8242,-20.55802 66.2158,73.57316 z"
|
||||
inkscape:randomized="0"
|
||||
inkscape:rounded="0"
|
||||
inkscape:flatsided="true"
|
||||
sodipodi:arg2="1.36158"
|
||||
sodipodi:arg1="0.83798123"
|
||||
sodipodi:r2="49.49128"
|
||||
sodipodi:r1="98.982559"
|
||||
sodipodi:cy="566.77936"
|
||||
sodipodi:cx="1782.9229"
|
||||
sodipodi:sides="6"
|
||||
id="path5019-0-0-7-9-1"
|
||||
style="opacity:1;fill:#cf242a;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
sodipodi:type="star" />
|
||||
<circle
|
||||
inkscape:export-ydpi="49.963245"
|
||||
inkscape:export-xdpi="49.963245"
|
||||
cy="146.29434"
|
||||
cx="60.563801"
|
||||
id="path5553-7-4"
|
||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.32007113;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
r="1.6003556" />
|
||||
<path
|
||||
inkscape:export-ydpi="49.963245"
|
||||
inkscape:export-xdpi="49.963245"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connector-type="polyline"
|
||||
id="path5592-6"
|
||||
d="M 61.747657,117.71039 47.48079,125.88424"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.52375275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
inkscape:export-ydpi="49.963245"
|
||||
inkscape:export-xdpi="49.963245"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connector-type="polyline"
|
||||
id="path5592-7-9"
|
||||
d="m 48.513627,124.19675 0.04811,16.44242"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.52375275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
inkscape:export-ydpi="49.963245"
|
||||
inkscape:export-xdpi="49.963245"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connector-type="polyline"
|
||||
id="path5592-7-1-4"
|
||||
d="m 47.524519,138.71468 14.136453,8.39741"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.52375275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
inkscape:export-ydpi="49.963245"
|
||||
inkscape:export-xdpi="49.963245"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connector-type="polyline"
|
||||
id="path5592-7-7-2"
|
||||
d="m 60.590101,117.13251 0.04811,16.44242"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.52375275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
inkscape:export-ydpi="49.963245"
|
||||
inkscape:export-xdpi="49.963245"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connector-type="polyline"
|
||||
id="path5592-7-4-2"
|
||||
d="m 60.657374,131.09278 0.04811,16.44242"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.52380002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
inkscape:export-ydpi="49.963245"
|
||||
inkscape:export-xdpi="49.963245"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connector-type="polyline"
|
||||
id="path5592-5-6"
|
||||
d="m 61.76555,131.70801 -14.266867,8.17386"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.52375275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
inkscape:export-ydpi="49.963245"
|
||||
inkscape:export-xdpi="49.963245"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connector-type="polyline"
|
||||
id="path5592-7-1-3-4"
|
||||
d="m 47.56389,124.84086 14.136453,8.39741"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.52375275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:0.99120963px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.08260079px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="72.334419"
|
||||
y="139.11192"
|
||||
id="text5093-1-4-1"
|
||||
inkscape:export-xdpi="49.963245"
|
||||
inkscape:export-ydpi="49.963245"><tspan
|
||||
style="font-size:18.19531631px;line-height:1.25;fill:#000000;stroke-width:0.08260079px"
|
||||
sodipodi:role="line"
|
||||
id="tspan5095-3-6-2"
|
||||
x="72.334419"
|
||||
y="139.11192"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#000000;fill-opacity:1;stroke-width:0.08260079px"
|
||||
id="tspan5097-1-4-8">ACTIVE</tspan></tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:0.99120963px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.08260079px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="74.97496"
|
||||
y="123.50168"
|
||||
id="text6938-4-8"
|
||||
inkscape:export-xdpi="49.963245"
|
||||
inkscape:export-ydpi="49.963245"><tspan
|
||||
style="font-size:7.49208975px;line-height:1.25;fill:#000000;stroke-width:0.08260079px"
|
||||
sodipodi:role="line"
|
||||
id="tspan6940-1-9"
|
||||
x="74.97496"
|
||||
y="123.50168">APACHE</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:0.99120963px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#c12766;fill-opacity:1;stroke:none;stroke-width:0.08260079px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="145.23894"
|
||||
y="139.11192"
|
||||
id="text5093-1-4-2-8-9-4-2"
|
||||
inkscape:export-xdpi="49.963245"
|
||||
inkscape:export-ydpi="49.963245"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5095-3-6-5-5-6-3-8"
|
||||
x="145.23894"
|
||||
y="139.11192"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:18.19531631px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:0.08260079px">MQ</tspan></text>
|
||||
<text
|
||||
id="text3960-8"
|
||||
y="126.94642"
|
||||
x="176.92981"
|
||||
style="font-style:normal;font-weight:normal;font-size:4.23333359px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.08476129"
|
||||
xml:space="preserve"
|
||||
inkscape:export-xdpi="49.963245"
|
||||
inkscape:export-ydpi="49.963245"><tspan
|
||||
style="font-size:4.23333359px;fill:#000000;stroke-width:0.08476129"
|
||||
y="126.94642"
|
||||
x="176.92981"
|
||||
id="tspan3958-8"
|
||||
sodipodi:role="line">®</tspan></text>
|
||||
<circle
|
||||
inkscape:export-ydpi="49.963245"
|
||||
inkscape:export-xdpi="49.963245"
|
||||
cy="139.24219"
|
||||
cx="48.333706"
|
||||
id="path5553-7-1-6"
|
||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.32007113;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
r="1.6003556" />
|
||||
<circle
|
||||
inkscape:export-ydpi="49.963245"
|
||||
inkscape:export-xdpi="49.963245"
|
||||
cy="132.48586"
|
||||
cx="60.901413"
|
||||
id="path5553-7-3-8"
|
||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.32007113;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
r="1.6003556" />
|
||||
<circle
|
||||
inkscape:export-ydpi="49.963245"
|
||||
inkscape:export-xdpi="49.963245"
|
||||
cy="125.41864"
|
||||
cx="48.562645"
|
||||
id="path5553-7-0-3"
|
||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.32007113;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
r="1.6003556" />
|
||||
<circle
|
||||
inkscape:export-ydpi="49.963245"
|
||||
inkscape:export-xdpi="49.963245"
|
||||
cy="118.44482"
|
||||
cx="60.632095"
|
||||
id="path5553-7-39-8"
|
||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.32007113;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
r="1.6003556" />
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.198;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker4948)"
|
||||
d="M 188.78021,91.418413 V 78.321538 h 37.43854"
|
||||
id="path9314"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.19800001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5026)"
|
||||
d="m 188.90156,104.28616 v 9.19122 h 37.60067"
|
||||
id="path5016"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.198;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5205)"
|
||||
d="m 55.725697,95.745707 h 10.557145 v 13.630743 h 14.56619"
|
||||
id="path5195"
|
||||
inkscape:connector-curvature="0" />
|
||||
<g
|
||||
id="g14843">
|
||||
<g
|
||||
transform="matrix(0.06217178,-0.0358949,0.0358949,0.06217178,167.26775,93.938451)"
|
||||
style="display:inline;fill:none;fill-opacity:1;stroke:#737373;stroke-opacity:1"
|
||||
id="g848-2">
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#737373;stroke-width:4.08199978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 37.797618,159.98364 43.544066,-37.68631 13.34135,10.63045 13.341346,-10.63045 43.54406,37.68631"
|
||||
id="path837-8"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
id="rect18-30-4"
|
||||
width="113.77083"
|
||||
height="72.382446"
|
||||
x="37.797619"
|
||||
y="87.601196"
|
||||
style="display:inline;fill:none;fill-opacity:1;stroke:#737373;stroke-width:3.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="display:inline;fill:none;fill-opacity:1;stroke:#737373;stroke-width:4.08199978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 37.797618,87.601196 94.683034,132.92778 151.56845,87.601196"
|
||||
id="path4533-3-7"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.06217178,-0.0358949,0.0358949,0.06217178,178.36829,93.66989)"
|
||||
style="display:inline;fill:none;fill-opacity:1;stroke:#737373;stroke-opacity:1"
|
||||
id="g848-24">
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#737373;stroke-width:4.08199978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 37.797618,159.98364 43.544066,-37.68631 13.34135,10.63045 13.341346,-10.63045 43.54406,37.68631"
|
||||
id="path837-0"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
id="rect18-30-6"
|
||||
width="113.77083"
|
||||
height="72.382446"
|
||||
x="37.797619"
|
||||
y="87.601196"
|
||||
style="display:inline;fill:none;fill-opacity:1;stroke:#737373;stroke-width:3.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="display:inline;fill:none;fill-opacity:1;stroke:#737373;stroke-width:4.08199978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 37.797618,87.601196 94.683034,132.92778 151.56845,87.601196"
|
||||
id="path4533-3-2"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<text
|
||||
id="text7135-04"
|
||||
y="99.971115"
|
||||
x="187.19398"
|
||||
style="font-style:normal;font-weight:normal;font-size:5.64444447px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-size:5.64444447px;stroke-width:0.26458332"
|
||||
y="99.971115"
|
||||
x="187.19398"
|
||||
id="tspan7133-22"
|
||||
sodipodi:role="line">3</tspan><tspan
|
||||
style="font-size:5.64444447px;stroke-width:0.26458332"
|
||||
y="107.02667"
|
||||
x="187.19398"
|
||||
sodipodi:role="line"
|
||||
id="tspan7302" /></text>
|
||||
<text
|
||||
id="text7135-4"
|
||||
y="99.971115"
|
||||
x="175.68803"
|
||||
style="font-style:normal;font-weight:normal;font-size:5.64444447px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-size:5.64444447px;stroke-width:0.26458332"
|
||||
y="99.971115"
|
||||
x="175.68803"
|
||||
id="tspan7133-09"
|
||||
sodipodi:role="line">4</tspan></text>
|
||||
<g
|
||||
transform="translate(19.88054,5.7352909)"
|
||||
id="g8519">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:1.25;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
x="132.71318"
|
||||
y="78.264839"
|
||||
id="text6840"><tspan
|
||||
sodipodi:role="line"
|
||||
x="132.71318"
|
||||
y="78.264839"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;stroke-width:0.26458332"
|
||||
id="tspan6842">q1</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
x="132.8999"
|
||||
y="83.37825"
|
||||
id="text7309-1"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan7307-9"
|
||||
x="132.8999"
|
||||
y="83.37825"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic';stroke-width:0.26458332">anycast</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g12174">
|
||||
<ellipse
|
||||
style="fill:none;fill-opacity:1;stroke:#00000d;stroke-width:0.62099993;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97864769;paint-order:markers fill stroke"
|
||||
id="path5311"
|
||||
cx="150.32578"
|
||||
cy="97.646393"
|
||||
rx="3.6896217"
|
||||
ry="6.3571329" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.62099999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 150.33806,91.296613 h 40.04857 z"
|
||||
id="path5864"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.62099999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 150.32578,104.0041 h 40.10183 z"
|
||||
id="path5864-8"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;fill-opacity:1;stroke:#00000d;stroke-width:0.62099999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97864769;paint-order:markers fill stroke"
|
||||
d="m 190.25345,91.297386 c 3.00706,0 5.44474,2.845239 5.44474,6.355023 0,3.509791 -2.43768,6.355021 -5.44474,6.355021"
|
||||
id="path5311-4" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 44 KiB |
|
@ -0,0 +1,92 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="210mm"
|
||||
height="297mm"
|
||||
viewBox="0 0 210 297"
|
||||
version="1.1"
|
||||
id="svg16"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
|
||||
sodipodi:docname="envelope.svg"
|
||||
enable-background="new">
|
||||
<defs
|
||||
id="defs10">
|
||||
<linearGradient
|
||||
id="linearGradient6065"
|
||||
osb:paint="solid">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop6063" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="3.959798"
|
||||
inkscape:cx="274.13053"
|
||||
inkscape:cy="682.17428"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer3"
|
||||
showgrid="false"
|
||||
inkscape:snap-object-midpoints="true"
|
||||
inkscape:snap-intersection-paths="true"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2056"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata13">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer3"
|
||||
inkscape:label="Layer 3"
|
||||
style="display:inline">
|
||||
<g
|
||||
id="g848"
|
||||
style="fill:none;fill-opacity:1;stroke:#737373;stroke-opacity:1"
|
||||
transform="rotate(-30,94.683033,123.79242)">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path837"
|
||||
d="m 37.797618,159.98364 43.544066,-37.68631 13.34135,10.63045 13.341346,-10.63045 43.54406,37.68631"
|
||||
style="fill:none;fill-opacity:1;stroke:#737373;stroke-width:4.08199978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
style="display:inline;fill:none;fill-opacity:1;stroke:#737373;stroke-width:3.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
y="87.601196"
|
||||
x="37.797619"
|
||||
height="72.382446"
|
||||
width="113.77083"
|
||||
id="rect18" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4533"
|
||||
d="M 37.797618,87.601196 94.683034,132.92778 151.56845,87.601196"
|
||||
style="display:inline;fill:none;fill-opacity:1;stroke:#737373;stroke-width:4.08199978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 52 KiB |
|
@ -0,0 +1,91 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="210mm"
|
||||
height="297mm"
|
||||
viewBox="0 0 210 297"
|
||||
version="1.1"
|
||||
id="svg5309"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
|
||||
sodipodi:docname="queue.svg">
|
||||
<defs
|
||||
id="defs5303" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.8"
|
||||
inkscape:cx="273.84106"
|
||||
inkscape:cy="453.68607"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:snap-bbox="false"
|
||||
inkscape:bbox-paths="false"
|
||||
inkscape:bbox-nodes="false"
|
||||
inkscape:snap-bbox-edge-midpoints="false"
|
||||
inkscape:snap-bbox-midpoints="false"
|
||||
inkscape:snap-object-midpoints="false"
|
||||
inkscape:snap-midpoints="true"
|
||||
inkscape:snap-center="true"
|
||||
inkscape:snap-nodes="false"
|
||||
inkscape:snap-global="false"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2056"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata5306">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<g
|
||||
id="g11770">
|
||||
<ellipse
|
||||
ry="26.34794"
|
||||
rx="15.456253"
|
||||
cy="167.64032"
|
||||
cx="38.325054"
|
||||
id="path5311"
|
||||
style="fill:none;fill-opacity:1;stroke:#00000d;stroke-width:2.59186125;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97864769;paint-order:markers fill stroke" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5864"
|
||||
d="M 38.359892,141.19121 H 152.02271 Z"
|
||||
style="fill:none;stroke:#000000;stroke-width:2.42474532;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5864-8"
|
||||
d="M 38.325055,194.08945 H 152.139 Z"
|
||||
style="fill:none;stroke:#000000;stroke-width:2.42635679;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
id="path5311-4"
|
||||
d="m 151.64473,141.19443 c 8.5344,0 15.45288,11.84405 15.45288,26.45444 0,14.6104 -6.91848,26.45445 -15.45288,26.45445"
|
||||
style="fill:none;fill-opacity:1;stroke:#00000d;stroke-width:2.4256227;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97864769;paint-order:markers fill stroke"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.3 KiB |
|
@ -1,10 +1,10 @@
|
|||
# Exclusive Queues
|
||||
|
||||
Exclusive queues are special queues which route all messages to only one
|
||||
Exclusive queues are special queues which dispatch all messages to only one
|
||||
consumer at a time.
|
||||
|
||||
This is useful when you want all messages to be processed serially by the same
|
||||
consumer, when a producer does not specify [Message Grouping](message-grouping.md).
|
||||
This is useful when you want all messages to be processed _serially_ but you
|
||||
can't or don't want to use [Message Grouping](message-grouping.md).
|
||||
|
||||
An example might be orders sent to an address and you need to consume them
|
||||
in the exact same order they were produced.
|
||||
|
@ -13,7 +13,6 @@ Obviously exclusive queues have a draw back that you cannot scale out the
|
|||
consumers to improve consumption as only one consumer would technically be active.
|
||||
Here we advise that you look at message groups first.
|
||||
|
||||
|
||||
## Configuring Exclusive Queues
|
||||
|
||||
Exclusive queues can be statically configured using the `exclusive` boolean
|
||||
|
|
|
@ -33,7 +33,7 @@ buffered on each consumer is determined by the `consumerWindowSize`
|
|||
parameter.
|
||||
|
||||
By default, the `consumerWindowSize` is set to 1 MiB (1024 \* 1024
|
||||
bytes) unless overridden via ([Address Settings](address-model.md#configuring-addresses-and-queues-via-address-settings))
|
||||
bytes) unless overridden via ([Address Settings](address-settings.md))
|
||||
|
||||
The value can be:
|
||||
|
||||
|
@ -172,7 +172,7 @@ but instead pages messages to storage.
|
|||
|
||||
To configure an address with a maximum size and tell the server that you
|
||||
want to block producers for this address if it becomes full, you need to
|
||||
define an AddressSettings ([Configuring Queues Via Address Settings](address-model.md#configuring-addresses-and-queues-via-address-settings)) block for the address and specify
|
||||
define an AddressSettings ([Configuring Queues Via Address Settings](address-settings.md)) block for the address and specify
|
||||
`max-size-bytes` and `address-full-policy`
|
||||
|
||||
The address block applies to all queues registered to that address. I.e.
|
||||
|
|
Before Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 54 KiB |
Before Width: | Height: | Size: 53 KiB |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 46 KiB |
|
@ -128,58 +128,8 @@ System.out.format("Received message: %s\n", messageReceived.getText());
|
|||
|
||||
## Forcing all consumers to be non-destructive
|
||||
|
||||
When a consumer attaches to a queue, the normal behaviour is that messages are
|
||||
sent to that consumer are acquired exclusively by that consumer, and when the
|
||||
consumer acknowledges them, the messages are removed from the queue.
|
||||
|
||||
Another common pattern is to have queue "browsers" which send all messages to
|
||||
the browser, but do not prevent other consumers from receiving the messages,
|
||||
and do not remove them from the queue when the browser is done with them. Such
|
||||
a browser is an instance of a "non-destructive" consumer.
|
||||
|
||||
If every consumer on a queue is non destructive then we can obtain some
|
||||
interesting behaviours. In the case of a LVQ then the queue will always contain
|
||||
the most up to date value for every key.
|
||||
|
||||
A queue can be created to enforce all consumers are non-destructive for last
|
||||
value queue. This can be achieved using the following queue configuration:
|
||||
|
||||
```xml
|
||||
<address name="foo.bar">
|
||||
<multicast>
|
||||
<queue name="orders1" last-value-key="reuters_code" non-destructive="true" />
|
||||
</multicast>
|
||||
</address>
|
||||
```
|
||||
|
||||
Or on auto-create when using the JMS Client by using address parameters when
|
||||
creating the destination used by the consumer.
|
||||
|
||||
```java
|
||||
Queue queue = session.createQueue("my.destination.name?last-value-key=reuters_code&non-destructive=true");
|
||||
Topic topic = session.createTopic("my.destination.name?last-value-key=reuters_code&non-destructive=true");
|
||||
```
|
||||
|
||||
Also the default for all queues under and address can be defaulted using the
|
||||
`address-setting` configuration:
|
||||
|
||||
```xml
|
||||
<address-setting match="lastValueQueue">
|
||||
<default-last-value-key>reuters_code</default-last-value-key>
|
||||
<default-non-destructive>true</default-non-destructive>
|
||||
</address-setting>
|
||||
```
|
||||
|
||||
By default, `default-non-destructive` is `false`.
|
||||
|
||||
#### Bounding size using `expiry-delay`
|
||||
|
||||
For queues other than LVQs, having only non-destructive consumers could mean
|
||||
that messages would never get deleted, leaving the queue to grow unconstrained.
|
||||
To prevent this you can use the ability to set a default `expiry-delay`.
|
||||
|
||||
See [expiry-delay](message-expiry.md#configuring-expiry-delay) for more details
|
||||
on this.
|
||||
It's common to combine last-value queues with [non-destructive](non-destructive-queues.md)
|
||||
semantics.
|
||||
|
||||
## Clustering
|
||||
|
||||
|
|
|
@ -0,0 +1,53 @@
|
|||
# Non-Destructive Queues
|
||||
|
||||
When a consumer attaches to a queue, the normal behaviour is that messages are
|
||||
sent to that consumer are acquired exclusively by that consumer, and when the
|
||||
consumer acknowledges them, the messages are removed from the queue.
|
||||
|
||||
Another common pattern is to have queue "browsers" which send all messages to
|
||||
the browser, but do not prevent other consumers from receiving the messages,
|
||||
and do not remove them from the queue when the browser is done with them. Such
|
||||
a browser is an instance of a "non-destructive" consumer.
|
||||
|
||||
If every consumer on a queue is non destructive then we can obtain some
|
||||
interesting behaviours. In the case of a [last value
|
||||
queue](last-value-queues.md) then the queue will always contain the most up to
|
||||
date value for every key.
|
||||
|
||||
A queue can be created to enforce all consumers are non-destructive using the
|
||||
following queue configuration:
|
||||
|
||||
```xml
|
||||
<address name="foo.bar">
|
||||
<multicast>
|
||||
<queue name="orders1" non-destructive="true" />
|
||||
</multicast>
|
||||
</address>
|
||||
```
|
||||
|
||||
Or on auto-create when using the JMS client by using address parameters when
|
||||
creating the destination used by the consumer.
|
||||
|
||||
```java
|
||||
Queue queue = session.createQueue("my.destination.name?non-destructive=true");
|
||||
Topic topic = session.createTopic("my.destination.name?non-destructive=true");
|
||||
```
|
||||
|
||||
Also the default for all queues under and address can be defaulted using the
|
||||
`address-setting` configuration:
|
||||
|
||||
```xml
|
||||
<address-setting match="nonDestructiveQueue">
|
||||
<default-non-destructive>true</default-non-destructive>
|
||||
</address-setting>
|
||||
```
|
||||
|
||||
By default, `default-non-destructive` is `false`.
|
||||
|
||||
## Limiting the Size of the Queue
|
||||
|
||||
For queues other than last-value queues, having only non-destructive consumers
|
||||
could mean that messages would never get deleted, leaving the queue to grow
|
||||
without constraint. To prevent this you can use the ability to set a default
|
||||
`expiry-delay`. See [expiry-delay](message-expiry.md#configuring-expiry-delay)
|
||||
for more details on this. You could also use a [ring queue](ring-queues.md).
|
|
@ -235,7 +235,7 @@ Highlights:
|
|||
- Support for [min/max expiry-delay](message-expiry.md#configuring-expiry-delay)
|
||||
- [Per-acceptor security domains](security.md#per-acceptor-security-domains)
|
||||
- Command-line `check` tool for checking the health of a broker
|
||||
- Support disabling metrics per address via the [`enable-metrics` address setting](address-model.md#configuring-addresses-and-queues-via-address-settings)
|
||||
- Support disabling metrics per address via the [`enable-metrics` address setting](address-settings.md)
|
||||
- Improvements to the [audit logging](logging.md#configuring-audit-logging)
|
||||
- Speed optimizations for the `HierarchicalObjectRepository`, an internal object used to store address and security settings
|
||||
|
||||
|
@ -422,7 +422,7 @@ Highlights:
|
|||
Highlights:
|
||||
- Support advanced destination options like `consumersBeforeDispatchStarts` and `timeBeforeDispatchStarts` from 5.x.
|
||||
- Add support for delays before deleting addresses and queues via [`auto-delete-queues-delay` and `auto-delete-addresses-delay`
|
||||
Address Settings](address-model.md#configuring-addresses-and-queues-via-address-settings).
|
||||
Address Settings](address-settings.md).
|
||||
- Support [logging HTTP access](web-server.md).
|
||||
- Add a CLI command to purge a queue.
|
||||
- Support user and role manipulation for PropertiesLoginModule via management interfaces.
|
||||
|
@ -432,7 +432,7 @@ Highlights:
|
|||
- Support [FQQN](address-model.md#specifying-a-fully-qualified-queue-name) for producers.
|
||||
- Track routed and unrouted messages sent to an address.
|
||||
- Support [connection pooling in LDAPLoginModule](security.md#ldaploginmodule).
|
||||
- Support configuring a default consumer window size via [`default-consumer-window-size` Address Setting](address-model.md#configuring-addresses-and-queues-via-address-settings).
|
||||
- Support configuring a default consumer window size via [`default-consumer-window-size` Address Setting](address-settings.md).
|
||||
- Support [masking](masking-passwords.md) `key-store-password` and `trust-store-password` in management.xml.
|
||||
- Support [`JMSXGroupSeq` -1 to close/reset message groups](message-grouping.md#closing-a-message-group) from 5.x.
|
||||
- Allow configuration of [RMI registry port](management.md#configuring-remote-jmx-access).
|
||||
|
|
|
@ -6,25 +6,25 @@ settings, address settings and when creating consumers.
|
|||
The syntax is similar to that used by [AMQP](https://www.amqp.org).
|
||||
|
||||
An Apache ActiveMQ Artemis wildcard expression contains words delimited by the character
|
||||
'`.`' (full stop).
|
||||
`.` (full stop).
|
||||
|
||||
The special characters '`#`' and '`*`' also have special meaning and can
|
||||
The special characters `#` and `*` also have special meaning and can
|
||||
take the place of a word.
|
||||
|
||||
The character '`#`' means 'match any sequence of zero or more words'.
|
||||
The character `#` means "match any sequence of zero or more words".
|
||||
|
||||
The character '`*`' means 'match a single word'.
|
||||
The character `*` means "match a single word".
|
||||
|
||||
So the wildcard 'news.europe.\#' would match 'news.europe',
|
||||
'news.europe.sport', 'news.europe.politics', and
|
||||
'news.europe.politics.regional' but would not match 'news.usa',
|
||||
'news.usa.sport' nor 'entertainment'.
|
||||
So the wildcard `news.europe.#` would match `news.europe`,
|
||||
`news.europe.sport`, `news.europe.politics`, and
|
||||
`news.europe.politics.regional` but would _not_ match `news.usa`,
|
||||
`news.usa.sport` or `entertainment`.
|
||||
|
||||
The wildcard 'news.\*' would match 'news.europe', but not
|
||||
'news.europe.sport'.
|
||||
The wildcard `news.*` would match `news.europe`, but not
|
||||
`news.europe.sport`.
|
||||
|
||||
The wildcard 'news.\*.sport' would match 'news.europe.sport' and also
|
||||
'news.usa.sport', but not 'news.europe.politics'.
|
||||
The wildcard `news.*.sport` would match `news.europe.sport` and also
|
||||
`news.usa.sport`, but not `news.europe.politics`.
|
||||
|
||||
## Customizing the Syntax
|
||||
|
||||
|
|
1
pom.xml
|
@ -1634,6 +1634,7 @@
|
|||
<exclude>docs/**/*.json</exclude>
|
||||
<exclude>docs/**/_book/</exclude>
|
||||
<exclude>docs/**/_layouts/</exclude>
|
||||
<exclude>docs/user-manual/en/diagrams/*.svg</exclude>
|
||||
<exclude>**/target/</exclude>
|
||||
<exclude>**/META-INF/services/*</exclude>
|
||||
<exclude>**/META-INF/MANIFEST.MF</exclude>
|
||||
|
|