2014-12-11 07:17:29 -05:00
|
|
|
# Libaio Native Libraries
|
2014-12-04 10:25:29 -05:00
|
|
|
|
2015-05-21 11:51:48 -04:00
|
|
|
Apache ActiveMQ Artemis distributes a native library, used as a bridge for its fast journal, between Apache ActiveMQ Artemis
|
2014-12-04 10:25:29 -05:00
|
|
|
and Linux libaio.
|
|
|
|
|
|
|
|
`libaio` is a library, developed as part of the Linux kernel project.
|
|
|
|
With `libaio` we submit writes to the operating system where they are
|
|
|
|
processed asynchronously. Some time later the OS will call our code back
|
|
|
|
when they have been processed.
|
|
|
|
|
|
|
|
We use this in our high performance journal if configured to do so,
|
2014-12-11 07:17:29 -05:00
|
|
|
please see [Persistence](persistence.md).
|
2014-12-04 10:25:29 -05:00
|
|
|
|
2015-04-27 17:32:30 -04:00
|
|
|
These are the native libraries distributed by Apache ActiveMQ Artemis:
|
2014-12-04 10:25:29 -05:00
|
|
|
|
|
|
|
- libActiveMQAIO32.so - x86 32 bits
|
|
|
|
|
|
|
|
- libActiveMQAIO64.so - x86 64 bits
|
|
|
|
|
2015-04-27 17:32:30 -04:00
|
|
|
When using libaio, Apache ActiveMQ Artemis will always try loading these files as long
|
2015-05-21 11:51:48 -04:00
|
|
|
as they are on the [library path](using-server.html#library-path)
|
|
|
|
|
|
|
|
|
|
|
|
## Runtime dependencies
|
|
|
|
|
|
|
|
If you just want to use the provided native binaries you need to install the required libaio dependency.
|
|
|
|
|
|
|
|
You can install libaio using the following steps as the root user:
|
|
|
|
|
|
|
|
Using yum, (e.g. on Fedora or Red Hat Enterprise Linux):
|
|
|
|
|
|
|
|
yum install libaio
|
|
|
|
|
|
|
|
Using aptitude, (e.g. on Ubuntu or Debian system):
|
|
|
|
|
|
|
|
apt-get install libaio
|
|
|
|
|
2014-12-04 10:25:29 -05:00
|
|
|
|
2014-12-11 07:17:29 -05:00
|
|
|
## Compiling the native libraries
|
2014-12-04 10:25:29 -05:00
|
|
|
|
|
|
|
In the case that you are using Linux on a platform other than x86\_32 or
|
|
|
|
x86\_64 (for example Itanium 64 bits or IBM Power) you may need to
|
|
|
|
compile the native library, since we do not distribute binaries for
|
|
|
|
those platforms with the release.
|
|
|
|
|
2015-05-21 11:51:48 -04:00
|
|
|
## Compilation dependencies
|
2014-12-04 10:25:29 -05:00
|
|
|
|
|
|
|
> **Note**
|
|
|
|
>
|
2015-05-21 11:51:48 -04:00
|
|
|
> The native layer is only available on Linux. If you are
|
2014-12-04 10:25:29 -05:00
|
|
|
> in a platform other than Linux the native compilation will not work
|
|
|
|
|
2015-03-02 12:08:00 -05:00
|
|
|
These are the required linux packages to be installed for the compilation to work:
|
2014-12-04 10:25:29 -05:00
|
|
|
|
|
|
|
- gcc - C Compiler
|
|
|
|
|
|
|
|
- gcc-c++ or g++ - Extension to gcc with support for C++
|
|
|
|
|
|
|
|
- libtool - Tool for link editing native libraries
|
|
|
|
|
|
|
|
- libaio - library to disk asynchronous IO kernel functions
|
|
|
|
|
|
|
|
- libaio-dev - Compilation support for libaio
|
|
|
|
|
|
|
|
- A full JDK installed with the environment variable JAVA\_HOME set to
|
|
|
|
its location
|
|
|
|
|
2015-03-02 12:08:00 -05:00
|
|
|
To perform this installation on RHEL or Fedora, you can simply type this at a command line:
|
2014-12-04 10:25:29 -05:00
|
|
|
|
2015-05-21 11:51:48 -04:00
|
|
|
sudo yum install libtool gcc-c++ gcc libaio libaio-devel
|
2014-12-04 10:25:29 -05:00
|
|
|
|
|
|
|
Or on Debian systems:
|
|
|
|
|
2015-05-21 11:51:48 -04:00
|
|
|
sudo apt-get install libtool gcc-g++ gcc libaio libaio-dev
|
2014-12-04 10:25:29 -05:00
|
|
|
|
|
|
|
> **Note**
|
|
|
|
>
|
|
|
|
> You could find a slight variation of the package names depending on
|
|
|
|
> the version and Linux distribution. (for example gcc-c++ on Fedora
|
|
|
|
> versus g++ on Debian systems)
|
|
|
|
|
2014-12-11 07:17:29 -05:00
|
|
|
## Invoking the compilation
|
2014-12-04 10:25:29 -05:00
|
|
|
|
2015-04-27 12:28:34 -04:00
|
|
|
In the source distribution or git clone, in the `artemis-native` directory, execute the shell
|
2015-03-02 12:08:00 -05:00
|
|
|
script `compile-native.sh`. This script will invoke the proper maven profile to perform the native build.
|
|
|
|
|
2015-04-27 12:28:34 -04:00
|
|
|
someUser@someBox:/checkout-dir/artemis-native$ ./compile-native.sh
|
2015-03-02 12:08:00 -05:00
|
|
|
[INFO] Scanning for projects...
|
|
|
|
[INFO]
|
|
|
|
[INFO] ------------------------------------------------------------------------
|
2015-04-29 13:20:31 -04:00
|
|
|
[INFO] Building ActiveMQ Artemis Native POM 1.0.0
|
2015-03-02 12:08:00 -05:00
|
|
|
[INFO] ------------------------------------------------------------------------
|
|
|
|
[INFO]
|
2015-04-27 12:28:34 -04:00
|
|
|
[INFO] --- nar-maven-plugin:3.0.0:nar-validate (default-nar-validate) @ artemis-native ---
|
2015-03-02 12:08:00 -05:00
|
|
|
[INFO] Using AOL: amd64-Linux-gpp
|
|
|
|
[INFO]
|
2015-04-27 12:28:34 -04:00
|
|
|
[INFO] --- maven-enforcer-plugin:1.4:enforce (enforce-java) @ artemis-native ---
|
2014-12-04 10:25:29 -05:00
|
|
|
...
|
|
|
|
|
|
|
|
The produced library will be at
|
2015-04-27 12:28:34 -04:00
|
|
|
`./target/nar/artemis-native-RELEASE-amd64-Linux-gpp-jni/lib/amd64-Linux-gpp/jni/
|
|
|
|
libartemis-native-RELEASE.so`. Simply move that file over
|
2015-03-02 12:08:00 -05:00
|
|
|
`bin` with the proper rename [library
|
2014-12-04 10:25:29 -05:00
|
|
|
path](#using-server.library.path).
|
|
|
|
|
2015-04-27 17:32:30 -04:00
|
|
|
If you want to perform changes on the Apache ActiveMQ Artemis libaio code, you could
|
2014-12-04 10:25:29 -05:00
|
|
|
just call make directly at the `native-src` directory.
|