Clarify doc on embedding

This commit is contained in:
Justin Bertram 2020-06-17 12:10:57 -05:00
parent 09b2a12f3c
commit 8e8bbc93ac
1 changed files with 30 additions and 30 deletions

View File

@ -1,10 +1,10 @@
# Embedding Apache ActiveMQ Artemis
Apache ActiveMQ Artemis is designed as set of simple Plain Old Java Objects
(POJOs). This means Apache ActiveMQ Artemis can be instantiated and run in any
(POJOs). This means Apache ActiveMQ Artemis can be instantiated and run in any
dependency injection framework such as Spring or Google Guice. It also means
that if you have an application that could use messaging functionality
internally, then it can *directly instantiate* Apache ActiveMQ Artemis clients
internally then it can *directly instantiate* Apache ActiveMQ Artemis clients
and servers in its own application code to perform that functionality. We call
this *embedding* Apache ActiveMQ Artemis.
@ -12,23 +12,33 @@ Examples of applications that might want to do this include any application
that needs very high performance, transactional, persistent messaging but
doesn't want the hassle of writing it all from scratch.
Embedding Apache ActiveMQ Artemis can be done in very few easy steps.
Instantiate the configuration object, instantiate the server, start it, and you
have a Apache ActiveMQ Artemis running in your virtual machine. It's as simple
and easy as that.
Embedding Apache ActiveMQ Artemis can be done in very few easy steps -
supply a `broker.xml` on the classpath or instantiate the configuration object,
instantiate the server, start it, and you have a Apache ActiveMQ Artemis running
in your JVM. It's as simple and easy as that.
## Simple Config File Embedding
## Embedding with XML configuration
The simplest way to embed Apache ActiveMQ Artemis is to use the embedded
wrapper classes and configure Apache ActiveMQ Artemis through its configuration
files. There are two different helper classes for this depending on whether
your using the Apache ActiveMQ Artemis Core API or JMS.
wrapper class and configure Apache ActiveMQ Artemis through `broker.xml`.
## Embedding an Apache ActiveMQ Artemis Broker
Here's a simple example `broker.xml`:
```xml
<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:activemq" xsi:schemaLocation="urn:activemq /schema/artemis-server.xsd">
<core xmlns="urn:activemq:core">
<persistence-enabled>false</persistence-enabled>
<security-enabled>false</security-enabled>
<acceptors>
<acceptor name="in-vm">vm://0</acceptor>
</acceptors>
</core>
</configuration>
```
For instantiating a core Apache ActiveMQ Artemis Server, the steps are pretty
simple. The example requires that you have defined a configuration file
`broker.xml` in your classpath:
```java
import org.apache.activemq.artemis.core.server.embedded.EmbeddedActiveMQ;
@ -36,33 +46,23 @@ import org.apache.activemq.artemis.core.server.embedded.EmbeddedActiveMQ;
...
EmbeddedActiveMQ embedded = new EmbeddedActiveMQ();
embedded.start();
ServerLocator serverLocator = ActiveMQClient.createServerLocator("vm://0");
ClientSessionFactory factory = serverLocator.createSessionFactory();
ClientSession session = factory.createSession();
session.createQueue("example", "example", true);
session.createQueue(new QueueConfiguration("example"));
ClientProducer producer = session.createProducer("example");
ClientMessage message = session.createMessage(true);
message.getBody().writeString("Hello");
producer.send(message);
session.start();
ClientConsumer consumer = session.createConsumer("example");
ClientMessage msgReceived = consumer.receive();
System.out.println("message = " + msgReceived.getBody().readString());
session.close();
```
@ -70,14 +70,14 @@ The `EmbeddedActiveMQ` class has a few additional setter methods that allow you
to specify a different config file name as well as other properties. See the
javadocs for this class for more details.
## POJO instantiation - Embedding Programmatically
## Embedding with programmatic configuration
You can follow this step-by-step guide to programmatically embed the core,
non-JMS Apache ActiveMQ Artemis Server instance:
You can follow this step-by-step guide to programmatically embed a broker
instance.
Create the configuration object - this contains configuration information for
Create the `Configuration` object. This contains configuration information for
an Apache ActiveMQ Artemis instance. The setter methods of this class allow you
to programmatically set configuration options as describe in the [Server
to programmatically set configuration options as described in the [Server
Configuration](configuration-index.md) section.
The acceptors are configured through `Configuration`. Just add the acceptor URL