Mirror of Apache ActiveMQ Artemis
Go to file
Howard Gao 6177d32774 ARTEMIS-2513 Large message's copy may be interfered by other threads
In LargeMessageImpl.copy(long) it need to open the underlying
file in order to read and copy bytes into the new copied message.
However there is a chance that another thread can come in and close
the file in the middle, making the copy failed
with "channel is null" error.

This is happening in cases where a large message is sent to a jms
topic (multicast address). During delivery it to multiple
subscribers, some consumer is doing delivery and closed the
underlying file after. Some other consumer is rolling back
the messages and eventually move it to DLQ (which will call
the above copy method). So there is a chance this bug being hit on.
2019-10-14 15:59:31 -04:00
.mvn/wrapper ARTEMIS-613 Artemis build enhancements 2016-07-05 15:13:35 -04:00
.settings ACTIVEMQ6-1 - Initial HornetQ Donation Commit 2014-11-10 10:31:25 -06:00
artemis-boot [maven-release-plugin] prepare for next development iteration 2019-09-23 11:19:54 -04:00
artemis-cdi-client [maven-release-plugin] prepare for next development iteration 2019-09-23 11:19:54 -04:00
artemis-cli ARTEMIS-2517 JMX will be shutdown after failback 2019-10-10 14:44:55 -04:00
artemis-commons ARTEMIS-2519: Use proper enum type inside ActiveMQUnexpectedRoutingTypeForAddress 2019-10-14 14:06:15 -04:00
artemis-core-client ARTEMIS-2500 CoreMessage doesn't make a ful copy of its props on moveHeadersAndProperties 2019-09-23 20:06:41 -04:00
artemis-core-client-all [maven-release-plugin] prepare for next development iteration 2019-09-23 11:19:54 -04:00
artemis-core-client-osgi [maven-release-plugin] prepare for next development iteration 2019-09-23 11:19:54 -04:00
artemis-distribution NO-JIRA moving shared-storage-static-cluster under clustering examples 2019-10-03 13:47:35 -04:00
artemis-docker ARTEMIS-2245 Cleaning up Docker images preparation, run and docs 2019-02-21 19:59:25 -05:00
artemis-dto [maven-release-plugin] prepare for next development iteration 2019-09-23 11:19:54 -04:00
artemis-features [maven-release-plugin] prepare for next development iteration 2019-09-23 11:19:54 -04:00
artemis-hawtio [maven-release-plugin] prepare for next development iteration 2019-09-23 11:19:54 -04:00
artemis-jdbc-store [maven-release-plugin] prepare for next development iteration 2019-09-23 11:19:54 -04:00
artemis-jms-client [maven-release-plugin] prepare for next development iteration 2019-09-23 11:19:54 -04:00
artemis-jms-client-all [maven-release-plugin] prepare for next development iteration 2019-09-23 11:19:54 -04:00
artemis-jms-client-osgi [maven-release-plugin] prepare for next development iteration 2019-09-23 11:19:54 -04:00
artemis-jms-server [maven-release-plugin] prepare for next development iteration 2019-09-23 11:19:54 -04:00
artemis-journal [maven-release-plugin] prepare for next development iteration 2019-09-23 11:19:54 -04:00
artemis-junit [maven-release-plugin] prepare for next development iteration 2019-09-23 11:19:54 -04:00
artemis-maven-plugin [maven-release-plugin] prepare for next development iteration 2019-09-23 11:19:54 -04:00
artemis-protocols ARTEMIS-2506 MQTT doesn't cleanup underlying connection for bad clients 2019-09-27 19:41:15 +08:00
artemis-ra [maven-release-plugin] prepare for next development iteration 2019-09-23 11:19:54 -04:00
artemis-rest [maven-release-plugin] prepare for next development iteration 2019-09-23 11:19:54 -04:00
artemis-selector [maven-release-plugin] prepare for next development iteration 2019-09-23 11:19:54 -04:00
artemis-server ARTEMIS-2513 Large message's copy may be interfered by other threads 2019-10-14 15:59:31 -04:00
artemis-server-osgi [maven-release-plugin] prepare for next development iteration 2019-09-23 11:19:54 -04:00
artemis-service-extensions [maven-release-plugin] prepare for next development iteration 2019-09-23 11:19:54 -04:00
artemis-tools [maven-release-plugin] prepare for next development iteration 2019-09-23 11:19:54 -04:00
artemis-web ARTEMIS-2517 JMX will be shutdown after failback 2019-10-10 14:44:55 -04:00
artemis-website [maven-release-plugin] prepare for next development iteration 2019-09-23 11:19:54 -04:00
docs Revert "ARTEMIS-2462 Allow store-forward queue to be deleted afte scaledown" 2019-09-17 14:05:00 -04:00
etc ARTEMIS-1189 - Fix checkstyle violations post checkstyle upgrade 2017-05-30 13:40:00 -04:00
examples NO-JIRA Fixing shared-storage-static-cluster parent 2019-10-09 11:39:38 -04:00
integration/activemq-spring-integration [maven-release-plugin] prepare for next development iteration 2019-09-23 11:19:54 -04:00
scripts NO-JIRA update docs for gitbox 2019-01-31 09:42:12 -06:00
tests ARTEMIS-2513 Large message's copy may be interfered by other threads 2019-10-14 15:59:31 -04:00
.gitignore ARTEMIS-1723 Migrate AMQP C# examples to the common .NET version 2018-03-06 12:12:11 -06:00
.project More name changes to activemq 2014-11-19 16:01:54 -05:00
.travis.yml Fix JDK version for Travis 2019-06-21 15:01:36 -04:00
LICENSE ARTEMIS-565 Replace json.org with javax.json 2016-07-25 21:44:57 -04:00
NOTICE NO-JIRA Update year to 2019 2019-01-23 21:06:09 -05:00
README.md Adds the Travis CI build status label on the README 2018-04-19 16:45:58 +02:00
RELEASING.md INFRA-17991: trivial change, testing repo after adjustments 2019-03-26 12:23:20 +00:00
artemis_doap.rdf Update vendor to ASF 2015-05-30 08:37:28 +02:00
mvnw ARTEMIS-613 Artemis build enhancements 2016-07-05 15:13:35 -04:00
mvnw.cmd ARTEMIS-613 Artemis build enhancements 2016-07-05 15:13:35 -04:00
pom.xml ARTEMIS-2509 Add some basic support for legacy openwire 2019-10-01 10:14:40 +01:00

README.md

ActiveMQ Artemis

This file describes some minimum 'stuff one needs to know' to get started coding in this project.

Source

For details about the modifying the code, building the project, running tests, IDE integration, etc. see our Hacking Guide.

Build Status

Build Status: Build Status

Building the ASYNC IO library

ActiveMQ Artemis provides two journal persistence types, NIO (which uses the Java NIO libraries), and ASYNCIO which interacts with the linux kernel libaio library. The ASYNCIO journal type should be used where possible as it is far superior in terms of performance.

ActiveMQ Artemis does not ship with the Artemis Native ASYNCIO library in the source distribution. These need to be built prior to running "mvn install", to ensure that the ASYNCIO journal type is available in the resulting build. Don't worry if you don't want to use ASYNCIO or your system does not support libaio, ActiveMQ Artemis will check at runtime to see if the required libraries and system dependencies are available, if not it will default to using NIO.

To build the ActiveMQ Artemis ASYNCIO native libraries, please follow the instructions in the artemis-native/README.

Documentation

Our documentation is always in sync with our releases at the Apache ActiveMQ Artemis website.

Or you can also look at the current master version on github.

Examples

To run an example firstly make sure you have run

$ mvn -Prelease install

If the project version has already been released then this is unnecessary.

Each individual example can be run using this command from its corresponding directory:

$ mvn verify

If you wish to run groups of examples then use this command from a parent directory (e.g. examples/features/standard):

$ mvn -Pexamples verify

Recreating the examples

If you are trying to copy the examples somewhere else and modifying them. Consider asking Maven to explicitly list all the dependencies:

# if trying to modify the 'topic' example:
cd examples/jms/topic && mvn dependency:list

Open Web Application Security Project (OWASP) Report

If you wish to generate the report for CCV dependencies, you may run it with the -Powasp profile

$ mvn -Powasp verify

The output will be under ./target/dependency-check-report.html for each sub-module.