This commit is contained in:
Clebert Suconic 2017-08-29 09:17:25 -04:00
commit b19637a347
22 changed files with 73 additions and 122 deletions

View File

@ -5,8 +5,8 @@
"githubHost": "https://github.com/",
"gitbook": "3.x.x",
"links": {
"home": "http://activemq.apache.org/",
"issues": "http://activemq.apache.org/",
"home": "http://activemq.apache.org/artemis",
"issues": "https://issues.apache.org/jira/browse/ARTEMIS",
"contribute": "http://activemq.apache.org/contributing.html"
}
}

View File

@ -5,8 +5,8 @@
"githubHost": "https://github.com/",
"gitbook": "3.x.x",
"links": {
"home": "http://activemq.apache.org/",
"issues": "http://activemq.apache.org/",
"home": "http://activemq.apache.org/artemis",
"issues": "https://issues.apache.org/jira/browse/ARTEMIS",
"contribute": "http://activemq.apache.org/contributing.html"
}
}

View File

@ -130,7 +130,7 @@ Add an address configuration with Anycast routing type element and its associate
It is possible to define an address with both point-to-point and publish-subscribe semantics enabled. While not typically recommend, this can be useful when you want, for example, a JMS Queue say orders and a JMS Topic named orders. The different routing types make the addresses appear to be distinct.
Using an example of JMS Clients, the messages sent by a JMS queue producer will be routed using the anycast routing type. Messages sent by a JMS topic producer will use the multicast routing type. In addition when a JMS topic consumer attaches, it will be attached to its own subscription queue. JMS queue consumer will be attached to the anycast queue.
Using an example of JMS Clients, the messages sent by a JMS message producer will be routed using the anycast routing type. Messages sent by a JMS topic producer will use the multicast routing type. In addition when a JMS topic consumer attaches, it will be attached to its own subscription queue. JMS queue consumer will be attached to the anycast queue.
![Point to Point](images/addressing-model-p2p-pubsub.png)
Figure 4. [Point-to-Point and Publish-Subscribe
@ -156,7 +156,7 @@ The XML snippet below is an example of what the configuration for an address usi
## How to filter messages
Apache ActiveMQ Artemis supports the ability to filter messages using Apache Artemis [Filter Expressions](#filter-expressions).
Apache ActiveMQ Artemis supports the ability to filter messages using Apache Artemis [Filter Expressions](filter-expressions.md).
Filters can be applied in two places, on a queue and on a consumer.
@ -275,7 +275,7 @@ The example below configures an address-setting to be automatically deleted by t
...
<address-settings>
<address-setting match="/news/politics/#">
<auto-create-addresses>true</auto-create-addresses>
<auto-delete-addresses>true</auto-delete-addresses>
<default-address-routing-type>MULTICAST</default-address-routing-type>
</address-setting>
</address-settings>
@ -362,7 +362,7 @@ In <broker-instance>/etc/broker.xml, add the anycastPrefix to the URL of the des
In most cases its not necessary to pre-create subscription queues. The relevant protocol managers take care of creating subscription queues when clients request to subscribe to an address. The type of subscription queue created, depends on what properties the client request. E.g. durable, non-shared, shared etc... Protocol managers uses special queue names to identify which queues below to which consumers and users need not worry about the details.
However, there are scenarios where a user may want to use broker side configuration to pre-configure a subscription. And later connect to that queue directly using a [Fully Qualified Queue name](#fully-qualified-queue-names).. The examples below show how to use broker side configuration to pre-configure a queue with publish subscribe behavior for shared, non-shared, durable and non-durable subscription behavior.
However, there are scenarios where a user may want to use broker side configuration to pre-configure a subscription. And later connect to that queue directly using a [Fully Qualified Queue name](#fully-qualified-queue-names). The examples below show how to use broker side configuration to pre-configure a queue with publish subscribe behavior for shared, non-shared, durable and non-durable subscription behavior.
#### Configuring a shared durable subscription queue with up to 10 concurrent consumers
@ -472,11 +472,10 @@ 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
to apply settings. See: [The chapter on the wild card syntax](#wildcard-syntax).
to apply settings. See: [The chapter on the wild card syntax](wildcard-syntax.md).
For example, if you used the `match` string `jms.queue.#` the settings
would be applied to all addresses which start with `jms.queue.` which
would be all JMS queues.
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
@ -484,13 +483,13 @@ appropriate chapter if available.
`max-delivery-attempts` defines how many time a cancelled message can be
redelivered before sending to the `dead-letter-address`. A full
explanation can be found [here](#undelivered-messages.configuring).
explanation can be found [here](undelivered-messages.md#Configuring-Dead-Letter-Addresses).
`redelivery-delay` defines how long to wait before attempting redelivery
of a cancelled message. see [here](#undelivered-messages.delay).
of a cancelled message. see [here](undelivered-messages.md#Configuring-Delayed-Redelivery).
`expiry-address` defines where to send a message that has expired. see
[here](#message-expiry.configuring).
[here](message-expiry.md#Configuring-Expiry-Addresses).
`expiry-delay` defines the expiration time that will be used for
messages which are using the default expiration time (i.e. 0). For
@ -502,14 +501,14 @@ unchanged. Setting `expiry-delay` to "-1" will disable this feature. The
default is "-1".
`last-value-queue` defines whether a queue only uses last values or not.
see [here](#last-value-queues).
see [here](last-value-queues.md).
`max-size-bytes` and `page-size-bytes` are used to set paging on an
address. This is explained [here](#paging).
address. This is explained [here](paging.md#Configuration).
`redistribution-delay` defines how long to wait when the last consumer
is closed on a queue before redistributing any messages. see
[here](#clusters).
[here](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, for example, there might be no

View File

@ -66,16 +66,6 @@ messaging server and a number of protocol managers that provide support for
the various protocol mentioned earlier. Protocol managers are plugable
if you
The role of the JMS Service is to deploy any JMS Queue, Topic and
ConnectionFactory instances from any server side JMS
configuration. It also provides a simple management API for
creating and destroying Queues and Topics
which can be accessed via JMX or the connection. It is a separate
service to the ActiveMQ Artemis core server, since the core server is JMS
agnostic. If you don't want to deploy any JMS Queue or Topic via
server side XML configuration and don't require a JMS management
API on the server side then you can disable this service.
The stand-alone server configuration uses [Airline](https://github.com/airlift/airline)
for bootstrapping the Broker.

View File

@ -5,8 +5,8 @@
"githubHost": "https://github.com/",
"gitbook": "3.x.x",
"links": {
"home": "http://activemq.apache.org/",
"issues": "http://activemq.apache.org/",
"home": "http://activemq.apache.org/artemis",
"issues": "https://issues.apache.org/jira/browse/ARTEMIS",
"contribute": "http://activemq.apache.org/contributing.html"
}
}

View File

@ -29,7 +29,7 @@ Another important part of clustering is *server discovery* where servers
can broadcast their connection details so clients or other servers can
connect to them with the minimum of configuration.
> **Warning**
> <a id="copy-warning"></a>**Warning**
>
> Once a cluster node has been configured it is common to simply copy
> that configuration to other nodes to produce a symmetric cluster.
@ -555,7 +555,7 @@ server.
<cluster-connections>
<cluster-connection name="my-cluster">
<address>jms</address>
<address></address>
<connector-ref>netty-connector</connector-ref>
<check-period>1000</check-period>
<connection-ttl>5000</connection-ttl>
@ -589,9 +589,7 @@ specified. The following shows all the available configuration options
connection address string with '!'.
In the case shown above the cluster connection will load balance
messages sent to addresses that start with `jms`. This cluster
connection, will, in effect apply to all JMS queues and topics since
they map to core queues that start with the substring "jms".
messages sent to all addresses (since it's empty).
The address can be any value and you can have many cluster
connections with different values of `address`, simultaneously
@ -608,16 +606,16 @@ specified. The following shows all the available configuration options
Examples:
- 'jms.eu'
matches all addresses starting with 'jms.eu'
- '!jms.eu'
matches all address except for those starting with 'jms.eu'
- 'jms.eu.uk,jms.eu.de'
matches all addresses starting with either 'jms.eu.uk' or
'jms.eu.de'
- 'jms.eu,!jms.eu.uk'
matches all addresses starting with 'jms.eu' but not those
starting with 'jms.eu.uk'
- 'eu'
matches all addresses starting with 'eu'
- '!eu'
matches all address except for those starting with 'eu'
- 'eu.uk,eu.de'
matches all addresses starting with either 'eu.uk' or
'eu.de'
- 'eu,!eu.uk'
matches all addresses starting with 'eu' but not those
starting with 'eu.uk'
Notes:
@ -935,16 +933,14 @@ Here's an address settings snippet from `broker.xml`
showing how message redistribution is enabled for a set of queues:
<address-settings>
<address-setting match="jms.#">
<address-setting match="#">
<redistribution-delay>0</redistribution-delay>
</address-setting>
</address-settings>
The above `address-settings` block would set a `redistribution-delay` of
`0` for any queue which is bound to an address that starts with "jms.".
All JMS queues and topic subscriptions are bound to addresses that start
with "jms.", so the above would enable instant (no delay) redistribution
for all JMS queues and topic subscriptions.
`0` for any queue which is bound to any address. So the above would enable
instant (no delay) redistribution for all addresses.
The attribute `match` can be an exact match or it can be a string that
conforms to the Apache ActiveMQ Artemis wildcard syntax (described in [Wildcard Syntax](wildcard-syntax.md)).

View File

@ -10,10 +10,9 @@ Server Configuration
broker.xml
--------------------------
This is the main core server configuration file which contains to elements
'core' and 'jms'.
The 'core' element contains the main server configuration while the 'jms'
element is used by the server side JMS service to load JMS Queues, Topics
This is the main core server configuration file which contains the 'core'
element.
The 'core' element contains the main server configuration.
# System properties
@ -83,7 +82,7 @@ Name | Description
[journal-type](persistence.md) | the type of journal to use. Default=ASYNCIO
[journal-datasync](persistence.md) | It will use msync/fsync on journal operations. Default=true.
[large-messages-directory](large-messages.md "Configuring the server") | the directory to store large messages. Default=data/largemessages
[management-address](management.md "Configuring Core Management") | the name of the management address to send management messages to. It is prefixed with "jms.queue" so that JMS clients can send messages to it. Default=jms.queue.activemq.management
[management-address](management.md "Configuring Core Management") | the name of the management address to send management messages to. Default=activemq.management
[management-notification-address](management.md "Configuring The Core Management Notification Address") | the name of the address that consumers bind to receive management notifications. Default=activemq.notifications
[mask-password](configuration-index.md "Using Masked Passwords in Configuration Files") | This option controls whether passwords in server configuration need be masked. If set to "true" the passwords are masked. Default=false
[max-saved-replicated-journals-size](ha.md#data-replication) | This specifies how many times a replicated backup server can restart after moving its files on start. Once there are this number of backup journal files the server will stop permanently after if fails back. -1 Means no Limit, 0 don't keep a copy at all, Default=2
@ -256,18 +255,6 @@ Name | Description
[permission.type ](security.md "Role based security for addresses") | the type of permission
[permission.roles ](security.md "Role based security for addresses") | a comma-separated list of roles to apply the permission to
----------------------------
##The jms configuration
Name | Type | Description
:--- | :--- | :---
[queue](using-jms.md "JMS Server Configuration") | Queue | a queue
[queue.name (attribute)](using-jms.md "JMS Server Configuration") | String | unique name of the queue
[queue.durable](using-jms.md "JMS Server Configuration") | Boolean | is the queue durable?. Default=true
[queue.filter](using-jms.md "JMS Server Configuration") | String | optional filter expression for the queue
[topic](using-jms.md "JMS Server Configuration") | Topic | a topic
[topic.name (attribute)](using-jms.md "JMS Server Configuration") | String | unique name of the topic
Using Masked Passwords in Configuration Files

View File

@ -42,8 +42,8 @@ Bridges are configured in `broker.xml`. Let's kick off
with an example (this is actually from the bridge example):
<bridge name="my-bridge">
<queue-name>jms.queue.sausage-factory</queue-name>
<forwarding-address>jms.queue.mincing-machine</forwarding-address>
<queue-name>sausage-factory</queue-name>
<forwarding-address>mincing-machine</forwarding-address>
<filter string="name='aardvark'"/>
<transformer-class-name>
org.apache.activemq.artemis.jms.example.HatColourChangeTransformer

View File

@ -59,8 +59,8 @@ Here's some example xml configuration for an exclusive divert, it's
taken from the divert example:
<divert name="prices-divert">
<address>jms.topic.priceUpdates</address>
<forwarding-address>jms.queue.priceForwarding</forwarding-address>
<address>priceUpdates</address>
<forwarding-address>priceForwarding</forwarding-address>
<filter string="office='New York'"/>
<transformer-class-name>
org.apache.activemq.artemis.jms.example.AddForwardingTimeTransformer
@ -68,11 +68,9 @@ taken from the divert example:
<exclusive>true</exclusive>
</divert>
We define a divert called '`prices-divert`' that will divert any
messages sent to the address '`jms.topic.priceUpdates`' (this
corresponds to any messages sent to a JMS Topic called '`priceUpdates`')
to another local address '`jms.queue.priceForwarding`' (this corresponds
to a local JMS queue called '`priceForwarding`'
We define a divert called `prices-divert` that will divert any
messages sent to the address `priceUpdates` to another local address
`priceForwarding`.
We also specify a message filter string so only messages with the
message property `office` with value `New York` will get diverted, all
@ -106,13 +104,11 @@ diverts with an optional filter and transformer, here's an example
non-exclusive divert, again from the divert example:
<divert name="order-divert">
<address>jms.queue.orders</address>
<forwarding-address>jms.topic.spyTopic</forwarding-address>
<address>orders</address>
<forwarding-address>spyTopic</forwarding-address>
<exclusive>false</exclusive>
</divert>
The above divert example takes a copy of every message sent to the
address '`jms.queue.orders`' (Which corresponds to a JMS Queue called
'`orders`') and sends it to a local address called
'`jms.topic.SpyTopic`' (which corresponds to a JMS Topic called
'`SpyTopic`').
address '`orders`' and sends it to a local address called
'`spyTopic`'.

View File

@ -289,7 +289,7 @@ consumer.
Clustered Queue
---------------
The `clustered-queue` example demonstrates a JMS queue deployed on two
The `clustered-queue` example demonstrates a queue deployed on two
different nodes. The two nodes are configured to form a cluster. We then
create a consumer for the queue on each node, and we create a producer
on only one of the nodes. We then send some messages via the producer,
@ -487,8 +487,8 @@ standalone Apache ActiveMQ Artemis servers.
JMS Context
-----------
The `jms-context` example shows how to send and receive a message to a
JMS Queue using Apache ActiveMQ Artemis by using a JMS Context.
The `jms-context` example shows how to send and receive a message to/from an
address/queue using Apache ActiveMQ Artemis by using a JMS Context.
A JMSContext is part of JMS 2.0 and combines the JMS Connection and
Session Objects into a simple Interface.
@ -550,7 +550,7 @@ Message Counter
---------------
The `message-counters` example shows you how to use message counters to
obtain message information for a JMS queue.
obtain message information for a queue.
Message Group
-------------
@ -676,7 +676,7 @@ send messages.
Queue
-----
A simple example demonstrating a JMS queue.
A simple example demonstrating a queue.
Message Redistribution
----------------------
@ -741,7 +741,7 @@ Scheduled Message
-----------------
The `scheduled-message` example shows you how to send a scheduled
message to a JMS Queue with Apache ActiveMQ Artemis. Scheduled messages won't get
message to an address/queue with Apache ActiveMQ Artemis. Scheduled messages won't get
delivered until a specified time in the future.
Security

View File

@ -212,7 +212,7 @@ It is therefore possible to go over the address limit by approximately:
'''total number of producers on address * producer window size'''
For example, if I have a JMS queue called "myqueue", I could set the
For example, if I have a queue called "myqueue", I could set the
maximum memory size to 10MiB, and the the server will control the number
of credits sent to any producers which are sending any messages to
myqueue such that the total messages in the queue never exceeds 10MiB.
@ -242,13 +242,13 @@ memory of all subscriptions in the topic won't exceed max-size-bytes.
Here's an example:
<address-settings>
<address-setting match="jms.queue.exampleQueue">
<address-setting match="exampleQueue">
<max-size-bytes>100000</max-size-bytes>
<address-full-policy>BLOCK</address-full-policy>
</address-setting>
</address-settings>
The above example would set the max size of the JMS queue "exampleQueue"
The above example would set the max size of the queue "exampleQueue"
to be 100000 bytes and would block any producers sending to that address
to prevent that max size being exceeded.

View File

@ -12,7 +12,7 @@ are only interested by the latest value for a particular stock.
Last-value queues are defined in the address-setting configuration:
<address-setting match="jms.queue.lastValueQueue">
<address-setting match="lastValueQueue">
<last-value-queue>true</last-value-queue>
</address-setting>

View File

@ -17,7 +17,7 @@ This is the native libraries distributed by Apache ActiveMQ Artemis:
- We used to distributed libActiveMQAIO32.so until early 2017. While it's not available on the distribution it should still be possible to compile to a 32 bits environment if needed.
When using libaio, Apache ActiveMQ Artemis will always try loading these files as long
as they are on the [library path](using-server.html#library-path)
as they are on the [library path](using-server.md#library-path)
## Runtime dependencies

View File

@ -47,8 +47,8 @@ following properties:
Expiry address are defined in the address-setting configuration:
<!-- expired messages in exampleQueue will be sent to the expiry address expiryQueue -->
<address-setting match="jms.queue.exampleQueue">
<expiry-address>jms.queue.expiryQueue</expiry-address>
<address-setting match="exampleQueue">
<expiry-address>expiryQueue</expiry-address>
</address-setting>
If messages are expired and no expiry address is specified, messages are

View File

@ -170,7 +170,7 @@ Let's take a brief look at these:
### Java Message Service (JMS)
[JMS](http://en.wikipedia.org/wiki/Java_Message_Service) is part of
Oracle's JEE specification. It's a Java API that encapsulates both message
Oracle's Java EE specification. It's a Java API that encapsulates both message
queue and publish-subscribe messaging patterns. JMS is a lowest common
denominator specification - i.e. it was created to encapsulate common
functionality of the already existing messaging systems that were

View File

@ -106,20 +106,6 @@ The standard Apache ActiveMQ Artemis core server uses two instances of the journ
file has a `bindings` extension. File size is `1048576`, and it is
located at the bindings folder.
- JMS journal.
This journal instance stores all JMS related data, This is basically
any JMS Queues, Topics and Connection Factories and any JNDI
bindings for these resources.
Any JMS Resources created via the management API will be persisted
to this journal. Any resources configured via configuration files
will not. The JMS Journal will only be created if JMS is being used.
The files on this journal are prefixed as `activemq-jms`. Each file
has a `jms` extension. File size is `1048576`, and it is located at
the bindings folder.
- Message journal.
This journal instance stores all message related data, including the

View File

@ -28,7 +28,7 @@ Why use Apache ActiveMQ Artemis? Here are just a few of the reasons:
messaging system, and others you won't find anywhere else.
- Elegant, clean-cut design with minimal third party dependencies. Run
ActiveMQ Artemis stand-alone, run it in integrated in your favourite JEE
ActiveMQ Artemis stand-alone, run it in integrated in your favourite Java EE
application server, or run it embedded inside your own product. It's
up to you.

View File

@ -5,7 +5,7 @@ The official Apache ActiveMQ Artemis project page is <http://activemq.apache.org
## Software Download
The software can be download from the Download
page:<http://activemq.apache.org/download.html>
page:<http://activemq.apache.org/artemis/download.html>
## Project Information

View File

@ -355,7 +355,7 @@ However if STOMP clients exit without sending a DISCONNECT frame or if
they crash the server will have no way of knowing immediately whether
the client is still alive or not. STOMP connections therefore default to
a connection-ttl value of 1 minute (see chapter on
[connection-ttl](#connection-ttl) for more information. This value can
[connection-ttl](connection-ttl.md) for more information. This value can
be overridden using the `connection-ttl-override` property or if you
need a specific connectionTtl for your stomp connections without
affecting the broker-wide `connection-ttl-override` setting, you can
@ -524,7 +524,7 @@ message to a normal message, before sending it to the client.
If a large message is compressed, the server will uncompressed it before
sending it to stomp clients. The default value of
`stompMinLargeMessageSize` is the same as the default value of
[min-large-message-size](#large-messages.core.config).
[min-large-message-size](large-messages.md#Configuring-Parameters).
### Stomp Over Web Sockets

View File

@ -222,10 +222,7 @@ Here is an example of the plugin's configuration:
and update the broker's authorization configuration in real-time. The default value is `true`.
The name of the queue or topic defined in LDAP will serve as the "match" for the security-setting, the permission value
will be mapped from the ActiveMQ 5.x type to the Artemis type, and the role will be mapped as-is. It's worth noting that
since the name of queue or topic coming from LDAP will server as the "match" for the security-setting the security-setting
may not be applied as expected to JMS destinations since Artemis always prefixes JMS destinations with "jms.queue." or
"jms.topic." as necessary.
will be mapped from the ActiveMQ 5.x type to the Artemis type, and the role will be mapped as-is.
ActiveMQ 5.x only has 3 permission types - `read`, `write`, and `admin`. These permission types are described on their
[website](http://activemq.apache.org/security.html). However, as described previously, ActiveMQ Artemis has 7 permission

View File

@ -1,4 +1,4 @@
#Detecting Slow Consumers
# Detecting Slow Consumers
In this section we will discuss how Apache ActiveMQ Artemis can be configured to deal
with slow consumers. A slow consumer with a server-side queue (e.g. JMS

View File

@ -36,7 +36,7 @@ consuming valuable CPU and network resources.
Delayed redelivery is defined in the address-setting configuration:
<!-- delay redelivery of messages for 5s -->
<address-setting match="jms.queue.exampleQueue">
<address-setting match="exampleQueue">
<!-- default is 1.0 -->
<redelivery-delay-multiplier>1.5</redelivery-delay-multiplier>
<!-- default is 0 (no delay) -->
@ -104,8 +104,8 @@ Dead letter address is defined in the address-setting configuration:
<!-- undelivered messages in exampleQueue will be sent to the dead letter address
deadLetterQueue after 3 unsuccessful delivery attempts -->
<address-setting match="jms.queue.exampleQueue">
<dead-letter-address>jms.queue.deadLetterQueue</dead-letter-address>
<address-setting match="exampleQueue">
<dead-letter-address>deadLetterQueue</dead-letter-address>
<max-delivery-attempts>3</max-delivery-attempts>
</address-setting>