You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2017/10/03 00:31:57 UTC

[1/2] activemq-artemis git commit: ARTEMIS-1443 Fix issue starting artemis in osgi with CORE protocol

Repository: activemq-artemis
Updated Branches:
  refs/heads/master 585c978a4 -> 0cb63fb88


ARTEMIS-1443 Fix issue starting artemis in osgi with CORE protocol


Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/59ec2296
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/59ec2296
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/59ec2296

Branch: refs/heads/master
Commit: 59ec22962bc73a361009d62c8975a0c8acad77cc
Parents: 585c978
Author: Ryan Yeats <ry...@gmail.com>
Authored: Fri Sep 29 16:43:25 2017 -0700
Committer: Clebert Suconic <cl...@apache.org>
Committed: Mon Oct 2 20:30:34 2017 -0400

----------------------------------------------------------------------
 artemis-features/src/main/resources/artemis.xml | 145 +++++++++++++++----
 .../src/main/resources/features.xml             |   2 +-
 .../activemq/artemis/osgi/ProtocolTracker.java  |  14 ++
 3 files changed, 134 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/59ec2296/artemis-features/src/main/resources/artemis.xml
----------------------------------------------------------------------
diff --git a/artemis-features/src/main/resources/artemis.xml b/artemis-features/src/main/resources/artemis.xml
index 99db089..fa14495 100644
--- a/artemis-features/src/main/resources/artemis.xml
+++ b/artemis-features/src/main/resources/artemis.xml
@@ -22,28 +22,68 @@ under the License.
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:schemaLocation="urn:activemq /schema/artemis-configuration.xsd">
 
-   <jms xmlns="urn:activemq:jms">
-      <queue name="DLQ"/>
-      <queue name="ExpiryQueue"/>
-   </jms>
+   <core xmlns="urn:activemq:core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="urn:activemq:core ">
 
-   <core xmlns="urn:activemq:core">
+      <persistence-enabled>true</persistence-enabled>
 
-      <!-- this could be ASYNCIO or NIO -->
+      <!-- this could be ASYNCIO, MAPPED, NIO
+           ASYNCIO: Linux Libaio
+           MAPPED: mmap files
+           NIO: Plain Java Files
+       -->
       <journal-type>ASYNCIO</journal-type>
-      <paging-directory>./data/paging</paging-directory>
-      <bindings-directory>./data/bindings</bindings-directory>
-      <journal-directory>./data/journal</journal-directory>
-      <large-messages-directory>./data/large-messages</large-messages-directory>
-      <journal-min-files>10</journal-min-files>
+
+      <paging-directory>./data/artemis/paging</paging-directory>
+
+      <bindings-directory>./data/artemis/bindings</bindings-directory>
+
+      <journal-directory>./data/artemis/journal</journal-directory>
+
+      <large-messages-directory>./data/artemis/large-messages</large-messages-directory>
+
+      <journal-datasync>true</journal-datasync>
+
+      <journal-min-files>2</journal-min-files>
+
+      <journal-pool-files>-1</journal-pool-files>
+
+      <!--
+        You can verify the network health of a particular NIC by specifying the <network-check-NIC> element.
+         <network-check-NIC>theNicName</network-check-NIC>
+        -->
+
+      <!--
+        Use this to use an HTTP server to validate the network
+         <network-check-URL-list>http://www.apache.org</network-check-URL-list> -->
+
+      <!-- <network-check-period>10000</network-check-period> -->
+      <!-- <network-check-timeout>1000</network-check-timeout> -->
+
+      <!-- this is a comma separated list, no spaces, just DNS or IPs
+           it should accept IPV6
+
+           Warning: Make sure you understand your network topology as this is meant to validate if your network is valid.
+                    Using IPs that could eventually disappear or be partially visible may defeat the purpose.
+                    You can use a list of multiple IPs, and if any successful ping will make the server OK to continue running -->
+      <!-- <network-check-list>10.0.0.1</network-check-list> -->
+
+      <!-- use this to customize the ping used for ipv4 addresses -->
+      <!-- <network-check-ping-command>ping -c 1 -t %d %s</network-check-ping-command> -->
+
+      <!-- use this to customize the ping used for ipv6 addresses -->
+      <!-- <network-check-ping6-command>ping6 -c 1 %2$s</network-check-ping6-command> -->
+
+
 
       <!--
        This value was determined through a calculation.
-       Your system could perform 0.63 writes per millisecond
+       Your system could perform 20.83 writes per millisecond
        on the current journal configuration.
-       That translates as a sync write every 1591999 nanoseconds
+       That translates as a sync write every 48000 nanoseconds
       -->
-      <journal-buffer-timeout>1591999</journal-buffer-timeout>
+      <journal-buffer-timeout>48000</journal-buffer-timeout>
+
 
       <!-- how often we are looking for how many bytes are being used on the disk in ms -->
       <disk-scan-period>5000</disk-scan-period>
@@ -52,28 +92,49 @@ under the License.
      that won't support flow control. -->
       <max-disk-usage>90</max-disk-usage>
 
+      <!-- should the broker detect dead locks and other issues -->
+      <critical-analyzer>true</critical-analyzer>
+
+      <critical-analyzer-timeout>120000</critical-analyzer-timeout>
+
+      <critical-analyzer-check-period>60000</critical-analyzer-check-period>
+
+      <critical-analyzer-policy>HALT</critical-analyzer-policy>
+
       <!-- the system will enter into page mode once you hit this limit.
-           This is an estimate in bytes of how much the messages are using in memory -->
+           This is an estimate in bytes of how much the messages are using in memory
+
+            The system will use half of the available memory (-Xmx) by default for the global-max-size.
+            You may specify a different value here if you need to customize it to your needs.
+
       <global-max-size>100Mb</global-max-size>
 
+      -->
+
       <acceptors>
-         <!-- Default ActiveMQ Artemis Acceptor.  Multi-protocol adapter.  Currently supports Core, OpenWire, Stomp and AMQP. -->
-         <!-- performance tests have shown that openWire performs best with these buffer sizes -->
-         <acceptor name="artemis">tcp://0.0.0.0:61616?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=CORE</acceptor>
+
+         <!-- useEpoll means: it will use Netty epoll if you are on a system (Linux) that supports it -->
+         <!-- amqpCredits: The number of credits sent to AMQP producers -->
+         <!-- amqpLowCredits: The server will send the # credits specified at amqpCredits at this low mark -->
+
+         <!-- Acceptor for every supported protocol -->
+         <acceptor name="artemis">tcp://0.0.0.0:61616?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=CORE,AMQP,STOMP,HORNETQ,MQTT,OPENWIRE;useEpoll=true;amqpCredits=1000;amqpLowCredits=300</acceptor>
 
          <!-- AMQP Acceptor.  Listens on default AMQP port for AMQP traffic.-->
-         <acceptor name="amqp">tcp://0.0.0.0:5672?protocols=AMQP</acceptor>
+         <acceptor name="amqp">tcp://0.0.0.0:5672?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=AMQP;useEpoll=true;amqpCredits=1000;amqpMinCredits=300</acceptor>
 
          <!-- STOMP Acceptor. -->
-         <acceptor name="stomp">tcp://0.0.0.0:61613?protocols=STOMP</acceptor>
+         <acceptor name="stomp">tcp://0.0.0.0:61613?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=STOMP;useEpoll=true</acceptor>
 
-         <!-- HornetQ Compatibility Acceptor.  Enables ActiveMQ Artemis Core and STOMP for legacy HornetQ clients. -->
-         <acceptor name="hornetq">tcp://0.0.0.0:5445?protocols=HORNETQ,STOMP</acceptor>
+         <!-- HornetQ Compatibility Acceptor.  Enables HornetQ Core and STOMP for legacy HornetQ clients. -->
+         <acceptor name="hornetq">tcp://0.0.0.0:5445?protocols=HORNETQ,STOMP;useEpoll=true</acceptor>
 
          <!-- MQTT Acceptor -->
-         <acceptor name="mqtt">tcp://0.0.0.0:1883?protocols=MQTT</acceptor>
+         <acceptor name="mqtt">tcp://0.0.0.0:1883?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=MQTT;useEpoll=true</acceptor>
+
       </acceptors>
 
+
       <security-settings>
          <security-setting match="#">
             <permission type="createNonDurableQueue" roles="manager"/>
@@ -83,25 +144,57 @@ under the License.
             <permission type="createAddress" roles="manager"/>
             <permission type="deleteAddress" roles="manager"/>
             <permission type="consume" roles="manager"/>
-            <permission type="send" roles="manager"/>
             <permission type="browse" roles="manager"/>
+            <permission type="send" roles="manager"/>
             <!-- we need this otherwise ./artemis data imp wouldn't work -->
             <permission type="manage" roles="manager"/>
          </security-setting>
       </security-settings>
 
       <address-settings>
+         <!-- if you define auto-create on certain queues, management has to be auto-create -->
+         <address-setting match="activemq.management#">
+            <dead-letter-address>DLQ</dead-letter-address>
+            <expiry-address>ExpiryQueue</expiry-address>
+            <redelivery-delay>0</redelivery-delay>
+            <!-- with -1 only the global-max-size is in use for limiting -->
+            <max-size-bytes>-1</max-size-bytes>
+            <message-counter-history-day-limit>10</message-counter-history-day-limit>
+            <address-full-policy>PAGE</address-full-policy>
+            <auto-create-queues>true</auto-create-queues>
+            <auto-create-addresses>true</auto-create-addresses>
+            <auto-create-jms-queues>true</auto-create-jms-queues>
+            <auto-create-jms-topics>true</auto-create-jms-topics>
+         </address-setting>
          <!--default for catch all-->
          <address-setting match="#">
-            <dead-letter-address>jms.queue.DLQ</dead-letter-address>
-            <expiry-address>jms.queue.ExpiryQueue</expiry-address>
+            <dead-letter-address>DLQ</dead-letter-address>
+            <expiry-address>ExpiryQueue</expiry-address>
             <redelivery-delay>0</redelivery-delay>
             <!-- with -1 only the global-max-size is in use for limiting -->
             <max-size-bytes>-1</max-size-bytes>
             <message-counter-history-day-limit>10</message-counter-history-day-limit>
             <address-full-policy>PAGE</address-full-policy>
             <auto-create-queues>true</auto-create-queues>
+            <auto-create-addresses>true</auto-create-addresses>
+            <auto-create-jms-queues>true</auto-create-jms-queues>
+            <auto-create-jms-topics>true</auto-create-jms-topics>
          </address-setting>
       </address-settings>
+
+      <addresses>
+         <address name="DLQ">
+            <anycast>
+               <queue name="DLQ" />
+            </anycast>
+         </address>
+         <address name="ExpiryQueue">
+            <anycast>
+               <queue name="ExpiryQueue" />
+            </anycast>
+         </address>
+
+      </addresses>
+
    </core>
 </configuration>

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/59ec2296/artemis-features/src/main/resources/features.xml
----------------------------------------------------------------------
diff --git a/artemis-features/src/main/resources/features.xml b/artemis-features/src/main/resources/features.xml
index bae4a4c..45094d5 100644
--- a/artemis-features/src/main/resources/features.xml
+++ b/artemis-features/src/main/resources/features.xml
@@ -87,7 +87,7 @@
 		<bundle>mvn:org.apache.activemq/artemis-hornetq-protocol/${pom.version}</bundle>
 	</feature>
 
-	<feature name="artemis-openwire" version="${pom.version}" description="ActiveMQ Artemis HornetQ protocol libraries">
+	<feature name="artemis-openwire" version="${pom.version}" description="ActiveMQ Artemis Openwire protocol libraries">
 		<feature>artemis-core</feature>
 		<bundle dependency="true">mvn:org.fusesource.hawtbuf/hawtbuf/1.11</bundle>
 		<bundle>mvn:org.apache.geronimo.specs/geronimo-j2ee-management_1.1_spec/1.0.1</bundle>

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/59ec2296/artemis-server-osgi/src/main/java/org/apache/activemq/artemis/osgi/ProtocolTracker.java
----------------------------------------------------------------------
diff --git a/artemis-server-osgi/src/main/java/org/apache/activemq/artemis/osgi/ProtocolTracker.java b/artemis-server-osgi/src/main/java/org/apache/activemq/artemis/osgi/ProtocolTracker.java
index 5ab2d3a..8e09129 100644
--- a/artemis-server-osgi/src/main/java/org/apache/activemq/artemis/osgi/ProtocolTracker.java
+++ b/artemis-server-osgi/src/main/java/org/apache/activemq/artemis/osgi/ProtocolTracker.java
@@ -23,6 +23,7 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.activemq.artemis.api.core.Interceptor;
+import org.apache.activemq.artemis.api.core.client.ActiveMQClient;
 import org.apache.activemq.artemis.spi.core.protocol.ProtocolManagerFactory;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
@@ -54,6 +55,19 @@ public class ProtocolTracker implements ServiceTrackerCustomizer<ProtocolManager
          this.protocols.put(requiredProtocol, false);
       }
       ActiveMQOsgiLogger.LOGGER.brokerConfigFound(name, Arrays.asList(requiredProtocols).toString());
+
+      //CORE is always registered as a protocol in RemoteServiceImpl
+      this.protocols.put(ActiveMQClient.DEFAULT_CORE_PROTOCOL, true);
+
+      //if no protocols are specified we need to start artemis
+      List<String> missing = getMissing();
+      if (missing.isEmpty()) {
+         try {
+            callback.start();
+         } catch (Exception e) {
+            ActiveMQOsgiLogger.LOGGER.errorStartingBroker(e, name);
+         }
+      }
    }
 
    @Override


[2/2] activemq-artemis git commit: This closes #1565

Posted by cl...@apache.org.
This closes #1565


Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/0cb63fb8
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/0cb63fb8
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/0cb63fb8

Branch: refs/heads/master
Commit: 0cb63fb88f297e6e0c53f30ae7a0a753800b99b8
Parents: 585c978 59ec229
Author: Clebert Suconic <cl...@apache.org>
Authored: Mon Oct 2 20:31:49 2017 -0400
Committer: Clebert Suconic <cl...@apache.org>
Committed: Mon Oct 2 20:31:49 2017 -0400

----------------------------------------------------------------------
 artemis-features/src/main/resources/artemis.xml | 145 +++++++++++++++----
 .../src/main/resources/features.xml             |   2 +-
 .../activemq/artemis/osgi/ProtocolTracker.java  |  14 ++
 3 files changed, 134 insertions(+), 27 deletions(-)
----------------------------------------------------------------------