ActiveMQ
  1. ActiveMQ
  2. AMQ-3838

Stomp-Transport: Multiple error frames generated

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Not a Problem
    • Affects Version/s: 5.6.0
    • Fix Version/s: None
    • Component/s: Transport
    • Environment:

      Win7Enterprise;Java7;ActiveMQ 5.6

      Description

      I tried to update ActiveMQ 5.5 to 5.6 and discovered a behavioral change if you try to send a message to an invalid queue with stomp. While v5.5 just rejects the message and returns one ERROR frame, v5.6 sends multiple error frames. I'll attach two network captures showing the conversation between client/server in 5.5 and 5.6 - in 5.6 you'll see the repeated error frames. Please let me know if I was unclear of if you need more information. Thanks in advance for any assistance or hint that will help me to get around this problem.

      1. ActiveMq55.txt
        3 kB
        Andreas Ländle
      2. ActiveMq56.txt
        7 kB
        Andreas Ländle
      3. ActiveMq56.png
        122 kB
        Andreas Ländle
      4. Reproduce_AMQ3838_StompTest.java.patch
        2 kB
        Andreas Ländle

        Activity

        Hide
        Timothy Bish added a comment -

        Working as designed.

        Show
        Timothy Bish added a comment - Working as designed.
        Hide
        Timothy Bish added a comment -

        The only error that will cause this connection close is the SecurityException. Once the client violates a security constraint then the TransportConnection retains the exception as the error that's caused the eventual transport stop and future commands all receive this same error frame back. Upon reconnection you would not receive this error frame again useless the client again attempts to send a message to a destination for which its not authorized, or it attempts to subscribe to one its not authorized to etc.

        Show
        Timothy Bish added a comment - The only error that will cause this connection close is the SecurityException. Once the client violates a security constraint then the TransportConnection retains the exception as the error that's caused the eventual transport stop and future commands all receive this same error frame back. Upon reconnection you would not receive this error frame again useless the client again attempts to send a message to a destination for which its not authorized, or it attempts to subscribe to one its not authorized to etc.
        Hide
        Andreas Ländle added a comment -

        Well, I also recognized that the connection is closed in this case. However, please take the following into account - the client is already authenticated is this case, so I'll guess there may exist better approaches for DoS than just sending to a queue where the client is not authorized for. And since a STOMP client has no possibility to ask if it is authorized to write/read a specified queue (or even if it exists) it might be quite hard for the client to decide if it is worth to try to send the message again - because for that it has to parse the message of the error frame - and it would be very hard because if a subsequent send message to a valid destination still returns a error frame so that the client might get confused (at least it also has to consider receipt identifiers).

        Furthermore I believe that the current behavior of the broker didn't meet the intention of the stomp protocol - but the specification is very unclear about the way how error frames should be used. But I understand STOMP more like a very simple QUESTION/ANSWER model. So maybe it is o.k. to abort the connection for DoS reasons (any good client should be able to handle connection interruptions), but I find it very hard to refuse any further communication after the client made a mistake (especially if the client sends totally unrelated commands like e.g. a DISCONNECT) - but that is just my interpretation!

        For me it doesn't seem to be hard to work around this issue, because I just send one message in one transaction and if it fails I destroy the connection anyway. So I have no problems with subsequent messages and I just hope that it doesn't bring side effects if I didn't try to re-send messages which are answered with an ERROR frame (so I hope there is no scenario where these frames are send because of only a temporary broker problem).

        Nonetheless thanks a lot for your explanations, and by implication your time, Timothy. And don't get me wrong - ActiveMQ is really a great product - I just was surprised that after migration of our test system some of my tests fail because of this behavioral change. But now I feel assured and I will just apply the mentioned workaround and update our live system...

        Show
        Andreas Ländle added a comment - Well, I also recognized that the connection is closed in this case. However, please take the following into account - the client is already authenticated is this case, so I'll guess there may exist better approaches for DoS than just sending to a queue where the client is not authorized for. And since a STOMP client has no possibility to ask if it is authorized to write/read a specified queue (or even if it exists) it might be quite hard for the client to decide if it is worth to try to send the message again - because for that it has to parse the message of the error frame - and it would be very hard because if a subsequent send message to a valid destination still returns a error frame so that the client might get confused (at least it also has to consider receipt identifiers). Furthermore I believe that the current behavior of the broker didn't meet the intention of the stomp protocol - but the specification is very unclear about the way how error frames should be used. But I understand STOMP more like a very simple QUESTION/ANSWER model. So maybe it is o.k. to abort the connection for DoS reasons (any good client should be able to handle connection interruptions), but I find it very hard to refuse any further communication after the client made a mistake (especially if the client sends totally unrelated commands like e.g. a DISCONNECT) - but that is just my interpretation! For me it doesn't seem to be hard to work around this issue, because I just send one message in one transaction and if it fails I destroy the connection anyway. So I have no problems with subsequent messages and I just hope that it doesn't bring side effects if I didn't try to re-send messages which are answered with an ERROR frame (so I hope there is no scenario where these frames are send because of only a temporary broker problem). Nonetheless thanks a lot for your explanations, and by implication your time, Timothy. And don't get me wrong - ActiveMQ is really a great product - I just was surprised that after migration of our test system some of my tests fail because of this behavioral change. But now I feel assured and I will just apply the mentioned workaround and update our live system...
        Hide
        Timothy Bish added a comment -

        The reason you continue to get an error frame is due to changes made for: https://issues.apache.org/jira/browse/AMQ-3294 which will cause the connection to closed after a delay to prevent denial of service attacks. Since the client has produced a security exception its connection is now invalid and will be terminated after a delay so that the error can be propagated to the client but the client cannot flood the broker with large numbers of additional erroneous commands.

        Show
        Timothy Bish added a comment - The reason you continue to get an error frame is due to changes made for: https://issues.apache.org/jira/browse/AMQ-3294 which will cause the connection to closed after a delay to prevent denial of service attacks. Since the client has produced a security exception its connection is now invalid and will be terminated after a delay so that the error can be propagated to the client but the client cannot flood the broker with large numbers of additional erroneous commands.
        Hide
        Andreas Ländle added a comment -

        I think I've modified the testSendNotAuthorized unit test to reproduce the problem - please forgive that this not a fully fledged production ready unit tests. It's just a quick&dirty piece of code illustrating the problem.

        Show
        Andreas Ländle added a comment - I think I've modified the testSendNotAuthorized unit test to reproduce the problem - please forgive that this not a fully fledged production ready unit tests. It's just a quick&dirty piece of code illustrating the problem.
        Hide
        Timothy Bish added a comment -

        I had tried reproducing it using the StompTest.java testSendNotAuthorized (or something close to that) as a starting point and adding in a subscription and a replyTo. You could try that. You could also create an NUnit test case on your own along with a simpler broker config that demonstrates the issue and I can look into it using that. I haven't bee able to reproduce it on my end but sometimes its just one missing thing that you might be doing in the code that I haven't so your help is appropriated.

        Show
        Timothy Bish added a comment - I had tried reproducing it using the StompTest.java testSendNotAuthorized (or something close to that) as a starting point and adding in a subscription and a replyTo. You could try that. You could also create an NUnit test case on your own along with a simpler broker config that demonstrates the issue and I can look into it using that. I haven't bee able to reproduce it on my end but sometimes its just one missing thing that you might be doing in the code that I haven't so your help is appropriated.
        Hide
        Andreas Ländle added a comment -

        The network capture shows that two error frames are send in a row.

        Show
        Andreas Ländle added a comment - The network capture shows that two error frames are send in a row.
        Hide
        Andreas Ländle added a comment -

        Hi Timothy. You are right, I use NMS.Stomp - but I couldn't believe that this should be a bug in the .Net client for two reasons.
        a) I used the same client to record the network streams as attached in ActiveMQ55/56.txt
        b) The log files really show RAW network communication (captured with WireShark) - and even a buggy client shouldn't be able to make the broker sending two error frames in a row (I'll attach a screenshot for better explanation).
        If you've already tried to reproduce this issue with a test - could you maybe attach the test-stub here as a patch? So I would have a good place to start and maybe I'm able to reproduce the issue in a test (at least at my system).

        Show
        Andreas Ländle added a comment - Hi Timothy. You are right, I use NMS.Stomp - but I couldn't believe that this should be a bug in the .Net client for two reasons. a) I used the same client to record the network streams as attached in ActiveMQ55/56.txt b) The log files really show RAW network communication (captured with WireShark) - and even a buggy client shouldn't be able to make the broker sending two error frames in a row (I'll attach a screenshot for better explanation). If you've already tried to reproduce this issue with a test - could you maybe attach the test-stub here as a patch? So I would have a good place to start and maybe I'm able to reproduce the issue in a test (at least at my system).
        Hide
        Timothy Bish added a comment -

        I've tried reproducing this with a JUnit test, everything appears to function as expected. I'd recommend trying to create a test case to reproduce your issue. It looks like you are using NMS.Stomp so perhaps its a bug in the Stomp .NET client.

        Show
        Timothy Bish added a comment - I've tried reproducing this with a JUnit test, everything appears to function as expected. I'd recommend trying to create a test case to reproduce your issue. It looks like you are using NMS.Stomp so perhaps its a bug in the Stomp .NET client.
        Hide
        Andreas Ländle added a comment -

        For whatever reason I'll get the message "The JIRA server was contacted but has returned an error response. We are unsure of the result of this operation." when I try to attach files. As a workaround I just paste the content of activemq.xml here. It is a 1:1 copy of the system - just passwords changed. Thanks for your efforts and please let me know if I can be of any further assistance.

        <!--
        Licensed to the Apache Software Foundation (ASF) under one or more
        contributor license agreements. See the NOTICE file distributed with
        this work for additional information regarding copyright ownership.
        The ASF licenses this file to You under the Apache License, Version 2.0
        (the "License"); you may not use this file except in compliance with
        the License. You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

        Unless required by applicable law or agreed to in writing, software
        distributed under the License is distributed on an "AS IS" BASIS,
        WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
        See the License for the specific language governing permissions and
        limitations under the License.
        -->
        <!-- START SNIPPET: example -->
        <beans
        xmlns="http://www.springframework.org/schema/beans"
        xmlns:amq="http://activemq.apache.org/schema/core"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
        http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">

        <!-- Allows us to use system properties as variables in this configuration file -->
        <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
        <value>file:$

        {activemq.conf}

        /credentials.properties</value>
        </property>
        </bean>

        <!--
        The <broker> element is used to configure the ActiveMQ broker.
        -->
        <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="$

        {activemq.data}" destroyApplicationContextOnStop="true" populateJMSXUserID="true">

        <destinationInterceptors>
        <virtualDestinationInterceptor>
        <virtualDestinations>
        <compositeQueue name="eetour.test.automatic.server" forwardOnly="false">
        <forwardTo>
        <topic physicalName="eetour.test.automatic.server" />
        </forwardTo>
        </compositeQueue>
        <compositeQueue name="eetour.production.services.soloplan" forwardOnly="false">
        <forwardTo>
        <topic physicalName="eetour.production.services.soloplan" />
        </forwardTo>
        </compositeQueue>
        <compositeTopic name="ActiveMQ.Advisory.Connection" forwardOnly="false">
        <forwardTo>
        <queue physicalName="eetour.production.services.soloplan" />
        <queue physicalName="eetour.test.manual.server2" />
        </forwardTo>
        </compositeTopic>
        </virtualDestinations>
        </virtualDestinationInterceptor>
        </destinationInterceptors>

        <!--
        For better performances use VM cursor and small memory limit.
        For more information, see:

        http://activemq.apache.org/message-cursors.html

        Also, if your producer is "hanging", it's probably due to producer flow control.
        For more information, see:
        http://activemq.apache.org/producer-flow-control.html
        -->

        <destinationPolicy>
        <policyMap>
        <policyEntries>
        <policyEntry topic=">" producerFlowControl="true" memoryLimit="1mb">
        <pendingSubscriberPolicy>
        <vmCursor />
        </pendingSubscriberPolicy>
        </policyEntry>
        <policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb">
        <!-- Use VM cursor for better latency
        For more information, see:

        http://activemq.apache.org/message-cursors.html

        <pendingQueuePolicy>
        <vmQueueCursor/>
        </pendingQueuePolicy>
        -->
        </policyEntry>
        </policyEntries>
        </policyMap>
        </destinationPolicy>

        <destinations>
        <topic physicalName="eetour.test.automatic.server" />
        <topic physicalName="eetour.production.services.soloplan" />

        <queue physicalName="eetour.test.automatic.client1" />
        <queue physicalName="eetour.test.automatic.client2" />
        <queue physicalName="eetour.test.automatic.server" />

        <queue physicalName="eetour.test.manual.client1" />
        <queue physicalName="eetour.test.manual.client2" />
        <queue physicalName="eetour.test.manual.server1" />
        <queue physicalName="eetour.test.manual.server2" />

        <queue physicalName="eetour.production.services.soloplan" />
        <queue physicalName="eetour.production.services.chargingstationhub" />

        <queue physicalName="eetour.production.chargingstations.00" />
        <queue physicalName="eetour.production.chargingstations.01" />
        <queue physicalName="eetour.production.chargingstations.02" />
        <queue physicalName="eetour.production.chargingstations.03" />
        <queue physicalName="eetour.production.chargingstations.04" />
        <queue physicalName="eetour.production.chargingstations.05" />
        <queue physicalName="eetour.production.chargingstations.06" />
        <queue physicalName="eetour.production.chargingstations.07" />
        <queue physicalName="eetour.production.chargingstations.08" />
        <queue physicalName="eetour.production.chargingstations.09" />
        <queue physicalName="eetour.production.chargingstations.10" />
        <queue physicalName="eetour.production.chargingstations.11" />
        <queue physicalName="eetour.production.chargingstations.12" />
        <queue physicalName="eetour.production.chargingstations.13" />
        <queue physicalName="eetour.production.chargingstations.14" />

        <queue physicalName="eetour.production.vehicles.00" />
        <queue physicalName="eetour.production.vehicles.01" />
        <queue physicalName="eetour.production.vehicles.02" />
        <queue physicalName="eetour.production.vehicles.03" />
        <queue physicalName="eetour.production.vehicles.04" />
        <queue physicalName="eetour.production.vehicles.05" />
        <queue physicalName="eetour.production.vehicles.06" />
        <queue physicalName="eetour.production.vehicles.07" />
        <queue physicalName="eetour.production.vehicles.08" />
        <queue physicalName="eetour.production.vehicles.09" />
        <queue physicalName="eetour.production.vehicles.10" />
        <queue physicalName="eetour.production.vehicles.11" />
        <queue physicalName="eetour.production.vehicles.12" />
        <queue physicalName="eetour.production.vehicles.13" />
        <queue physicalName="eetour.production.vehicles.14" />
        <queue physicalName="eetour.production.vehicles.15" />
        <queue physicalName="eetour.production.vehicles.16" />
        <queue physicalName="eetour.production.vehicles.17" />
        <queue physicalName="eetour.production.vehicles.18" />
        <queue physicalName="eetour.production.vehicles.19" />
        <queue physicalName="eetour.production.vehicles.20" />
        <queue physicalName="eetour.production.vehicles.21" />
        <queue physicalName="eetour.production.vehicles.22" />
        <queue physicalName="eetour.production.vehicles.23" />
        <queue physicalName="eetour.production.vehicles.24" />
        <queue physicalName="eetour.production.vehicles.25" />
        <queue physicalName="eetour.production.vehicles.26" />
        <queue physicalName="eetour.production.vehicles.27" />
        <queue physicalName="eetour.production.vehicles.28" />
        <queue physicalName="eetour.production.vehicles.29" />
        <queue physicalName="eetour.production.vehicles.30" />
        <queue physicalName="eetour.production.vehicles.31" />
        <queue physicalName="eetour.production.vehicles.32" />
        <queue physicalName="eetour.production.vehicles.33" />
        <queue physicalName="eetour.production.vehicles.34" />
        <queue physicalName="eetour.production.vehicles.35" />
        <queue physicalName="eetour.production.vehicles.36" />
        <queue physicalName="eetour.production.vehicles.37" />
        <queue physicalName="eetour.production.vehicles.38" />
        <queue physicalName="eetour.production.vehicles.39" />
        </destinations>

        <!--
        The managementContext is used to configure how ActiveMQ is exposed in
        JMX. By default, ActiveMQ uses the MBean server that is started by
        the JVM. For more information, see:

        http://activemq.apache.org/jmx.html
        -->
        <managementContext>
        <managementContext createConnector="false"/>
        </managementContext>

        <!--
        Configure message persistence for the broker. The default persistence
        mechanism is the KahaDB store (identified by the kahaDB tag).
        For more information, see:

        http://activemq.apache.org/persistence.html
        -->
        <persistenceAdapter>
        <kahaDB directory="${activemq.data}

        /kahadb"/>
        </persistenceAdapter>

        <plugins>
        <!-- Enable logging plugin to be able to log connection infos. -->
        <loggingBrokerPlugin />

        <simpleAuthenticationPlugin>
        <users>
        <authenticationUser username="system" password="topsecret" groups="users,admins"/>
        <!-authenticationUser username="user" password="topsecret" groups="users"/->
        <!-authenticationUser username="guest" password="topsecret" groups="guests"/->

        <authenticationUser username="eetour.test.automatic.client1" password="topsecret" groups="users,tac,tac1"/>
        <authenticationUser username="eetour.test.automatic.client2" password="topsecret" groups="users,tac,tac2"/>
        <authenticationUser username="eetour.test.automatic.server" password="topsecret" groups="users,tas"/>

        <authenticationUser username="eetour.test.manual.client1" password="topsecret" groups="users,tmc,tmc1"/>
        <authenticationUser username="eetour.test.manual.client2" password="topsecret" groups="users,tmc,tmc2"/>
        <authenticationUser username="eetour.test.manual.server1" password="topsecret" groups="users,tms,tms1"/>
        <authenticationUser username="eetour.test.manual.server2" password="topsecret" groups="users,tms,tms2"/>

        <authenticationUser username="eetour.production.services.soloplan" password="topsecret" groups="users,pss"/>
        <authenticationUser username="eetour.production.services.chargingstationhub" password="topsecret" groups="users,pss"/>

        <authenticationUser username="eetour.production.chargingstations.00" password="topsecret" groups="users,pcs,pcs00"/>
        <authenticationUser username="eetour.production.chargingstations.01" password="topsecret" groups="users,pcs,pcs01"/>
        <authenticationUser username="eetour.production.chargingstations.02" password="topsecret" groups="users,pcs,pcs02"/>
        <authenticationUser username="eetour.production.chargingstations.03" password="topsecret" groups="users,pcs,pcs03"/>
        <authenticationUser username="eetour.production.chargingstations.04" password="topsecret" groups="users,pcs,pcs04"/>
        <authenticationUser username="eetour.production.chargingstations.05" password="topsecret" groups="users,pcs,pcs05"/>
        <authenticationUser username="eetour.production.chargingstations.06" password="topsecret" groups="users,pcs,pcs06"/>
        <authenticationUser username="eetour.production.chargingstations.07" password="topsecret" groups="users,pcs,pcs07"/>
        <authenticationUser username="eetour.production.chargingstations.08" password="topsecret" groups="users,pcs,pcs08"/>
        <authenticationUser username="eetour.production.chargingstations.09" password="topsecret" groups="users,pcs,pcs09"/>
        <authenticationUser username="eetour.production.chargingstations.10" password="topsecret" groups="users,pcs,pcs10"/>
        <authenticationUser username="eetour.production.chargingstations.11" password="topsecret" groups="users,pcs,pcs11"/>
        <authenticationUser username="eetour.production.chargingstations.12" password="topsecret" groups="users,pcs,pcs12"/>
        <authenticationUser username="eetour.production.chargingstations.13" password="topsecret" groups="users,pcs,pcs13"/>
        <authenticationUser username="eetour.production.chargingstations.14" password="topsecret" groups="users,pcs,pcs14"/>

        <authenticationUser username="eetour.production.vehicles.00" password="topsecret" groups="users,pv,pv00"/>
        <authenticationUser username="eetour.production.vehicles.01" password="topsecret" groups="users,pv,pv01"/>
        <authenticationUser username="eetour.production.vehicles.02" password="topsecret" groups="users,pv,pv02"/>
        <authenticationUser username="eetour.production.vehicles.03" password="topsecret" groups="users,pv,pv03"/>
        <authenticationUser username="eetour.production.vehicles.04" password="topsecret" groups="users,pv,pv04"/>
        <authenticationUser username="eetour.production.vehicles.05" password="topsecret" groups="users,pv,pv05"/>
        <authenticationUser username="eetour.production.vehicles.06" password="topsecret" groups="users,pv,pv06"/>
        <authenticationUser username="eetour.production.vehicles.07" password="topsecret" groups="users,pv,pv07"/>
        <authenticationUser username="eetour.production.vehicles.08" password="topsecret" groups="users,pv,pv08"/>
        <authenticationUser username="eetour.production.vehicles.09" password="topsecret" groups="users,pv,pv09"/>
        <authenticationUser username="eetour.production.vehicles.10" password="topsecret" groups="users,pv,pv10"/>
        <authenticationUser username="eetour.production.vehicles.11" password="topsecret" groups="users,pv,pv11"/>
        <authenticationUser username="eetour.production.vehicles.12" password="topsecret" groups="users,pv,pv12"/>
        <authenticationUser username="eetour.production.vehicles.13" password="topsecret" groups="users,pv,pv13"/>
        <authenticationUser username="eetour.production.vehicles.14" password="topsecret" groups="users,pv,pv14"/>
        <authenticationUser username="eetour.production.vehicles.15" password="topsecret" groups="users,pv,pv15"/>
        <authenticationUser username="eetour.production.vehicles.16" password="topsecret" groups="users,pv,pv16"/>
        <authenticationUser username="eetour.production.vehicles.17" password="topsecret" groups="users,pv,pv17"/>
        <authenticationUser username="eetour.production.vehicles.18" password="topsecret" groups="users,pv,pv18"/>
        <authenticationUser username="eetour.production.vehicles.19" password="topsecret" groups="users,pv,pv19"/>
        <authenticationUser username="eetour.production.vehicles.20" password="topsecret" groups="users,pv,pv20"/>
        <authenticationUser username="eetour.production.vehicles.21" password="topsecret" groups="users,pv,pv21"/>
        <authenticationUser username="eetour.production.vehicles.22" password="topsecret" groups="users,pv,pv22"/>
        <authenticationUser username="eetour.production.vehicles.23" password="topsecret" groups="users,pv,pv23"/>
        <authenticationUser username="eetour.production.vehicles.24" password="topsecret" groups="users,pv,pv24"/>
        <authenticationUser username="eetour.production.vehicles.25" password="topsecret" groups="users,pv,pv25"/>
        <authenticationUser username="eetour.production.vehicles.26" password="topsecret" groups="users,pv,pv26"/>
        <authenticationUser username="eetour.production.vehicles.27" password="topsecret" groups="users,pv,pv27"/>
        <authenticationUser username="eetour.production.vehicles.28" password="topsecret" groups="users,pv,pv28"/>
        <authenticationUser username="eetour.production.vehicles.29" password="topsecret" groups="users,pv,pv29"/>
        <authenticationUser username="eetour.production.vehicles.30" password="topsecret" groups="users,pv,pv30"/>
        <authenticationUser username="eetour.production.vehicles.31" password="topsecret" groups="users,pv,pv31"/>
        <authenticationUser username="eetour.production.vehicles.32" password="topsecret" groups="users,pv,pv32"/>
        <authenticationUser username="eetour.production.vehicles.33" password="topsecret" groups="users,pv,pv33"/>
        <authenticationUser username="eetour.production.vehicles.34" password="topsecret" groups="users,pv,pv34"/>
        <authenticationUser username="eetour.production.vehicles.35" password="topsecret" groups="users,pv,pv35"/>
        <authenticationUser username="eetour.production.vehicles.36" password="topsecret" groups="users,pv,pv36"/>
        <authenticationUser username="eetour.production.vehicles.37" password="topsecret" groups="users,pv,pv37"/>
        <authenticationUser username="eetour.production.vehicles.38" password="topsecret" groups="users,pv,pv38"/>
        <authenticationUser username="eetour.production.vehicles.39" password="topsecret" groups="users,pv,pv39"/>
        </users>
        </simpleAuthenticationPlugin>

        <authorizationPlugin>
        <map>
        <authorizationMap>
        <authorizationEntries>
        <authorizationEntry topic=">" read="admins" write="admins" admin="admins" />
        <authorizationEntry topic="eetour.test.automatic.server" read="tas" write="tac" admin="admins" />
        <authorizationEntry topic="eetour.production.services.soloplan" read="pss" write="pv" admin="admins" />
        <authorizationEntry topic="ActiveMQ.Advisory.>" read="guests,users" write="guests,users" admin="guests,users"/>

        <authorizationEntry queue=">" read="admins" write="admins" admin="admins" />
        <authorizationEntry queue="eetour.test.automatic.client1" read="tac1" write="tas" admin="admins" />
        <authorizationEntry queue="eetour.test.automatic.client2" read="tac2" write="tas" admin="admins" />
        <authorizationEntry queue="eetour.test.automatic.server" read="tas" write="tac" admin="admins" />

        <authorizationEntry queue="eetour.test.manual.client1" read="tmc1" write="tms" admin="admins" />
        <authorizationEntry queue="eetour.test.manual.client2" read="tmc2" write="tms" admin="admins" />
        <authorizationEntry queue="eetour.test.manual.server1" read="tms" write="tmc" admin="admins" />
        <authorizationEntry queue="eetour.test.manual.server2" read="tms" write="tmc" admin="admins" />

        <authorizationEntry queue="eetour.production.services.soloplan" read="pss" write="pv" admin="admins" />
        <authorizationEntry queue="eetour.production.services.chargingstationhub" read="pss" write="pcs" admin="admins" />

        <authorizationEntry queue="eetour.production.chargingstations.00" read="pcs00" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.chargingstations.01" read="pcs01" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.chargingstations.02" read="pcs02" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.chargingstations.03" read="pcs03" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.chargingstations.04" read="pcs04" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.chargingstations.05" read="pcs05" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.chargingstations.06" read="pcs06" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.chargingstations.07" read="pcs07" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.chargingstations.08" read="pcs08" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.chargingstations.09" read="pcs09" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.chargingstations.10" read="pcs10" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.chargingstations.11" read="pcs11" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.chargingstations.12" read="pcs12" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.chargingstations.13" read="pcs13" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.chargingstations.14" read="pcs14" write="pss" admin="admins" />

        <authorizationEntry queue="eetour.production.vehicles.00" read="pv00" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.01" read="pv01" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.02" read="pv02" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.03" read="pv03" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.04" read="pv04" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.05" read="pv05" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.06" read="pv06" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.07" read="pv07" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.08" read="pv08" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.09" read="pv09" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.10" read="pv10" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.11" read="pv11" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.12" read="pv12" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.13" read="pv13" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.14" read="pv14" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.15" read="pv15" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.16" read="pv16" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.17" read="pv17" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.18" read="pv18" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.19" read="pv19" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.20" read="pv20" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.21" read="pv21" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.22" read="pv22" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.23" read="pv23" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.24" read="pv24" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.25" read="pv25" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.26" read="pv26" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.27" read="pv27" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.28" read="pv28" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.29" read="pv29" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.30" read="pv30" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.31" read="pv31" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.32" read="pv32" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.33" read="pv33" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.34" read="pv34" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.35" read="pv35" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.36" read="pv36" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.37" read="pv37" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.38" read="pv38" write="pss" admin="admins" />
        <authorizationEntry queue="eetour.production.vehicles.39" read="pv39" write="pss" admin="admins" />
        </authorizationEntries>

        <!-- let's assign roles to temporary destinations. comment this entry if we don't want any roles assigned to temp destinations -->
        <tempDestinationAuthorizationEntry>
        <tempDestinationAuthorizationEntry read="tempDestinationAdmins" write="tempDestinationAdmins" admin="tempDestinationAdmins"/>
        </tempDestinationAuthorizationEntry>
        </authorizationMap>
        </map>
        </authorizationPlugin>

        <bean xmlns="http://www.springframework.org/schema/beans" id="forcePersistencyModeBroker" class="org.apache.activemq.plugin.ForcePersistencyModeBrokerPlugin">
        <property name="persistenceFlag" value="true"/>
        </bean>
        </plugins>

        <!--
        The systemUsage controls the maximum amount of space the broker will
        use before slowing down producers. For more information, see:
        http://activemq.apache.org/producer-flow-control.html
        If using ActiveMQ embedded - the following limits could safely be used:

        <systemUsage>
        <systemUsage>
        <memoryUsage>
        <memoryUsage limit="20 mb"/>
        </memoryUsage>
        <storeUsage>
        <storeUsage limit="1 gb"/>
        </storeUsage>
        <tempUsage>
        <tempUsage limit="100 mb"/>
        </tempUsage>
        </systemUsage>
        </systemUsage>
        -->
        <systemUsage>
        <systemUsage>
        <memoryUsage>
        <memoryUsage limit="64 mb"/>
        </memoryUsage>
        <storeUsage>
        <storeUsage limit="100 gb"/>
        </storeUsage>
        <tempUsage>
        <tempUsage limit="50 gb"/>
        </tempUsage>
        </systemUsage>
        </systemUsage>

        <sslContext>
        <sslContext keyStore="file:$

        {activemq.base}/conf/broker.ks"
        keyStorepassword="topsecret" trustStore="file:${activemq.base}

        /conf/broker.ts"
        trustStorepassword="topsecret"/>
        </sslContext>

        <!--
        The transport connectors expose ActiveMQ over a given protocol to
        clients and other brokers. For more information, see:

        http://activemq.apache.org/configuring-transports.html
        -->
        <transportConnectors>
        <!-transportConnector name="openwire" uri="tcp://localhost:61616"/->
        <transportConnector name="stomp+ssl" uri="stomp+ssl://entwicklung031.soloplan.de:61614"/>
        <transportConnector name="stomp" uri="stomp://entwicklung031.soloplan.de:61613"/>
        </transportConnectors>
        </broker>

        <!--
        Enable web consoles, REST and Ajax APIs and demos

        Take a look at $

        {ACTIVEMQ_HOME}

        /conf/jetty.xml for more details
        -->
        <import resource="jetty.xml"/>

        </beans>
        <!-- END SNIPPET: example -->

        Show
        Andreas Ländle added a comment - For whatever reason I'll get the message "The JIRA server was contacted but has returned an error response. We are unsure of the result of this operation." when I try to attach files. As a workaround I just paste the content of activemq.xml here. It is a 1:1 copy of the system - just passwords changed. Thanks for your efforts and please let me know if I can be of any further assistance. <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <!-- START SNIPPET: example --> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:amq="http://activemq.apache.org/schema/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd "> <!-- Allows us to use system properties as variables in this configuration file --> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <value> file:$ {activemq.conf} /credentials.properties</value> </property> </bean> <!-- The <broker> element is used to configure the ActiveMQ broker. --> <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="$ {activemq.data}" destroyApplicationContextOnStop="true" populateJMSXUserID="true"> <destinationInterceptors> <virtualDestinationInterceptor> <virtualDestinations> <compositeQueue name="eetour.test.automatic.server" forwardOnly="false"> <forwardTo> <topic physicalName="eetour.test.automatic.server" /> </forwardTo> </compositeQueue> <compositeQueue name="eetour.production.services.soloplan" forwardOnly="false"> <forwardTo> <topic physicalName="eetour.production.services.soloplan" /> </forwardTo> </compositeQueue> <compositeTopic name="ActiveMQ.Advisory.Connection" forwardOnly="false"> <forwardTo> <queue physicalName="eetour.production.services.soloplan" /> <queue physicalName="eetour.test.manual.server2" /> </forwardTo> </compositeTopic> </virtualDestinations> </virtualDestinationInterceptor> </destinationInterceptors> <!-- For better performances use VM cursor and small memory limit. For more information, see: http://activemq.apache.org/message-cursors.html Also, if your producer is "hanging", it's probably due to producer flow control. For more information, see: http://activemq.apache.org/producer-flow-control.html --> <destinationPolicy> <policyMap> <policyEntries> <policyEntry topic=">" producerFlowControl="true" memoryLimit="1mb"> <pendingSubscriberPolicy> <vmCursor /> </pendingSubscriberPolicy> </policyEntry> <policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb"> <!-- Use VM cursor for better latency For more information, see: http://activemq.apache.org/message-cursors.html <pendingQueuePolicy> <vmQueueCursor/> </pendingQueuePolicy> --> </policyEntry> </policyEntries> </policyMap> </destinationPolicy> <destinations> <topic physicalName="eetour.test.automatic.server" /> <topic physicalName="eetour.production.services.soloplan" /> <queue physicalName="eetour.test.automatic.client1" /> <queue physicalName="eetour.test.automatic.client2" /> <queue physicalName="eetour.test.automatic.server" /> <queue physicalName="eetour.test.manual.client1" /> <queue physicalName="eetour.test.manual.client2" /> <queue physicalName="eetour.test.manual.server1" /> <queue physicalName="eetour.test.manual.server2" /> <queue physicalName="eetour.production.services.soloplan" /> <queue physicalName="eetour.production.services.chargingstationhub" /> <queue physicalName="eetour.production.chargingstations.00" /> <queue physicalName="eetour.production.chargingstations.01" /> <queue physicalName="eetour.production.chargingstations.02" /> <queue physicalName="eetour.production.chargingstations.03" /> <queue physicalName="eetour.production.chargingstations.04" /> <queue physicalName="eetour.production.chargingstations.05" /> <queue physicalName="eetour.production.chargingstations.06" /> <queue physicalName="eetour.production.chargingstations.07" /> <queue physicalName="eetour.production.chargingstations.08" /> <queue physicalName="eetour.production.chargingstations.09" /> <queue physicalName="eetour.production.chargingstations.10" /> <queue physicalName="eetour.production.chargingstations.11" /> <queue physicalName="eetour.production.chargingstations.12" /> <queue physicalName="eetour.production.chargingstations.13" /> <queue physicalName="eetour.production.chargingstations.14" /> <queue physicalName="eetour.production.vehicles.00" /> <queue physicalName="eetour.production.vehicles.01" /> <queue physicalName="eetour.production.vehicles.02" /> <queue physicalName="eetour.production.vehicles.03" /> <queue physicalName="eetour.production.vehicles.04" /> <queue physicalName="eetour.production.vehicles.05" /> <queue physicalName="eetour.production.vehicles.06" /> <queue physicalName="eetour.production.vehicles.07" /> <queue physicalName="eetour.production.vehicles.08" /> <queue physicalName="eetour.production.vehicles.09" /> <queue physicalName="eetour.production.vehicles.10" /> <queue physicalName="eetour.production.vehicles.11" /> <queue physicalName="eetour.production.vehicles.12" /> <queue physicalName="eetour.production.vehicles.13" /> <queue physicalName="eetour.production.vehicles.14" /> <queue physicalName="eetour.production.vehicles.15" /> <queue physicalName="eetour.production.vehicles.16" /> <queue physicalName="eetour.production.vehicles.17" /> <queue physicalName="eetour.production.vehicles.18" /> <queue physicalName="eetour.production.vehicles.19" /> <queue physicalName="eetour.production.vehicles.20" /> <queue physicalName="eetour.production.vehicles.21" /> <queue physicalName="eetour.production.vehicles.22" /> <queue physicalName="eetour.production.vehicles.23" /> <queue physicalName="eetour.production.vehicles.24" /> <queue physicalName="eetour.production.vehicles.25" /> <queue physicalName="eetour.production.vehicles.26" /> <queue physicalName="eetour.production.vehicles.27" /> <queue physicalName="eetour.production.vehicles.28" /> <queue physicalName="eetour.production.vehicles.29" /> <queue physicalName="eetour.production.vehicles.30" /> <queue physicalName="eetour.production.vehicles.31" /> <queue physicalName="eetour.production.vehicles.32" /> <queue physicalName="eetour.production.vehicles.33" /> <queue physicalName="eetour.production.vehicles.34" /> <queue physicalName="eetour.production.vehicles.35" /> <queue physicalName="eetour.production.vehicles.36" /> <queue physicalName="eetour.production.vehicles.37" /> <queue physicalName="eetour.production.vehicles.38" /> <queue physicalName="eetour.production.vehicles.39" /> </destinations> <!-- The managementContext is used to configure how ActiveMQ is exposed in JMX. By default, ActiveMQ uses the MBean server that is started by the JVM. For more information, see: http://activemq.apache.org/jmx.html --> <managementContext> <managementContext createConnector="false"/> </managementContext> <!-- Configure message persistence for the broker. The default persistence mechanism is the KahaDB store (identified by the kahaDB tag). For more information, see: http://activemq.apache.org/persistence.html --> <persistenceAdapter> <kahaDB directory="${activemq.data} /kahadb"/> </persistenceAdapter> <plugins> <!-- Enable logging plugin to be able to log connection infos. --> <loggingBrokerPlugin /> <simpleAuthenticationPlugin> <users> <authenticationUser username="system" password="topsecret" groups="users,admins"/> <!- authenticationUser username="user" password="topsecret" groups="users"/ -> <!- authenticationUser username="guest" password="topsecret" groups="guests"/ -> <authenticationUser username="eetour.test.automatic.client1" password="topsecret" groups="users,tac,tac1"/> <authenticationUser username="eetour.test.automatic.client2" password="topsecret" groups="users,tac,tac2"/> <authenticationUser username="eetour.test.automatic.server" password="topsecret" groups="users,tas"/> <authenticationUser username="eetour.test.manual.client1" password="topsecret" groups="users,tmc,tmc1"/> <authenticationUser username="eetour.test.manual.client2" password="topsecret" groups="users,tmc,tmc2"/> <authenticationUser username="eetour.test.manual.server1" password="topsecret" groups="users,tms,tms1"/> <authenticationUser username="eetour.test.manual.server2" password="topsecret" groups="users,tms,tms2"/> <authenticationUser username="eetour.production.services.soloplan" password="topsecret" groups="users,pss"/> <authenticationUser username="eetour.production.services.chargingstationhub" password="topsecret" groups="users,pss"/> <authenticationUser username="eetour.production.chargingstations.00" password="topsecret" groups="users,pcs,pcs00"/> <authenticationUser username="eetour.production.chargingstations.01" password="topsecret" groups="users,pcs,pcs01"/> <authenticationUser username="eetour.production.chargingstations.02" password="topsecret" groups="users,pcs,pcs02"/> <authenticationUser username="eetour.production.chargingstations.03" password="topsecret" groups="users,pcs,pcs03"/> <authenticationUser username="eetour.production.chargingstations.04" password="topsecret" groups="users,pcs,pcs04"/> <authenticationUser username="eetour.production.chargingstations.05" password="topsecret" groups="users,pcs,pcs05"/> <authenticationUser username="eetour.production.chargingstations.06" password="topsecret" groups="users,pcs,pcs06"/> <authenticationUser username="eetour.production.chargingstations.07" password="topsecret" groups="users,pcs,pcs07"/> <authenticationUser username="eetour.production.chargingstations.08" password="topsecret" groups="users,pcs,pcs08"/> <authenticationUser username="eetour.production.chargingstations.09" password="topsecret" groups="users,pcs,pcs09"/> <authenticationUser username="eetour.production.chargingstations.10" password="topsecret" groups="users,pcs,pcs10"/> <authenticationUser username="eetour.production.chargingstations.11" password="topsecret" groups="users,pcs,pcs11"/> <authenticationUser username="eetour.production.chargingstations.12" password="topsecret" groups="users,pcs,pcs12"/> <authenticationUser username="eetour.production.chargingstations.13" password="topsecret" groups="users,pcs,pcs13"/> <authenticationUser username="eetour.production.chargingstations.14" password="topsecret" groups="users,pcs,pcs14"/> <authenticationUser username="eetour.production.vehicles.00" password="topsecret" groups="users,pv,pv00"/> <authenticationUser username="eetour.production.vehicles.01" password="topsecret" groups="users,pv,pv01"/> <authenticationUser username="eetour.production.vehicles.02" password="topsecret" groups="users,pv,pv02"/> <authenticationUser username="eetour.production.vehicles.03" password="topsecret" groups="users,pv,pv03"/> <authenticationUser username="eetour.production.vehicles.04" password="topsecret" groups="users,pv,pv04"/> <authenticationUser username="eetour.production.vehicles.05" password="topsecret" groups="users,pv,pv05"/> <authenticationUser username="eetour.production.vehicles.06" password="topsecret" groups="users,pv,pv06"/> <authenticationUser username="eetour.production.vehicles.07" password="topsecret" groups="users,pv,pv07"/> <authenticationUser username="eetour.production.vehicles.08" password="topsecret" groups="users,pv,pv08"/> <authenticationUser username="eetour.production.vehicles.09" password="topsecret" groups="users,pv,pv09"/> <authenticationUser username="eetour.production.vehicles.10" password="topsecret" groups="users,pv,pv10"/> <authenticationUser username="eetour.production.vehicles.11" password="topsecret" groups="users,pv,pv11"/> <authenticationUser username="eetour.production.vehicles.12" password="topsecret" groups="users,pv,pv12"/> <authenticationUser username="eetour.production.vehicles.13" password="topsecret" groups="users,pv,pv13"/> <authenticationUser username="eetour.production.vehicles.14" password="topsecret" groups="users,pv,pv14"/> <authenticationUser username="eetour.production.vehicles.15" password="topsecret" groups="users,pv,pv15"/> <authenticationUser username="eetour.production.vehicles.16" password="topsecret" groups="users,pv,pv16"/> <authenticationUser username="eetour.production.vehicles.17" password="topsecret" groups="users,pv,pv17"/> <authenticationUser username="eetour.production.vehicles.18" password="topsecret" groups="users,pv,pv18"/> <authenticationUser username="eetour.production.vehicles.19" password="topsecret" groups="users,pv,pv19"/> <authenticationUser username="eetour.production.vehicles.20" password="topsecret" groups="users,pv,pv20"/> <authenticationUser username="eetour.production.vehicles.21" password="topsecret" groups="users,pv,pv21"/> <authenticationUser username="eetour.production.vehicles.22" password="topsecret" groups="users,pv,pv22"/> <authenticationUser username="eetour.production.vehicles.23" password="topsecret" groups="users,pv,pv23"/> <authenticationUser username="eetour.production.vehicles.24" password="topsecret" groups="users,pv,pv24"/> <authenticationUser username="eetour.production.vehicles.25" password="topsecret" groups="users,pv,pv25"/> <authenticationUser username="eetour.production.vehicles.26" password="topsecret" groups="users,pv,pv26"/> <authenticationUser username="eetour.production.vehicles.27" password="topsecret" groups="users,pv,pv27"/> <authenticationUser username="eetour.production.vehicles.28" password="topsecret" groups="users,pv,pv28"/> <authenticationUser username="eetour.production.vehicles.29" password="topsecret" groups="users,pv,pv29"/> <authenticationUser username="eetour.production.vehicles.30" password="topsecret" groups="users,pv,pv30"/> <authenticationUser username="eetour.production.vehicles.31" password="topsecret" groups="users,pv,pv31"/> <authenticationUser username="eetour.production.vehicles.32" password="topsecret" groups="users,pv,pv32"/> <authenticationUser username="eetour.production.vehicles.33" password="topsecret" groups="users,pv,pv33"/> <authenticationUser username="eetour.production.vehicles.34" password="topsecret" groups="users,pv,pv34"/> <authenticationUser username="eetour.production.vehicles.35" password="topsecret" groups="users,pv,pv35"/> <authenticationUser username="eetour.production.vehicles.36" password="topsecret" groups="users,pv,pv36"/> <authenticationUser username="eetour.production.vehicles.37" password="topsecret" groups="users,pv,pv37"/> <authenticationUser username="eetour.production.vehicles.38" password="topsecret" groups="users,pv,pv38"/> <authenticationUser username="eetour.production.vehicles.39" password="topsecret" groups="users,pv,pv39"/> </users> </simpleAuthenticationPlugin> <authorizationPlugin> <map> <authorizationMap> <authorizationEntries> <authorizationEntry topic=">" read="admins" write="admins" admin="admins" /> <authorizationEntry topic="eetour.test.automatic.server" read="tas" write="tac" admin="admins" /> <authorizationEntry topic="eetour.production.services.soloplan" read="pss" write="pv" admin="admins" /> <authorizationEntry topic="ActiveMQ.Advisory.>" read="guests,users" write="guests,users" admin="guests,users"/> <authorizationEntry queue=">" read="admins" write="admins" admin="admins" /> <authorizationEntry queue="eetour.test.automatic.client1" read="tac1" write="tas" admin="admins" /> <authorizationEntry queue="eetour.test.automatic.client2" read="tac2" write="tas" admin="admins" /> <authorizationEntry queue="eetour.test.automatic.server" read="tas" write="tac" admin="admins" /> <authorizationEntry queue="eetour.test.manual.client1" read="tmc1" write="tms" admin="admins" /> <authorizationEntry queue="eetour.test.manual.client2" read="tmc2" write="tms" admin="admins" /> <authorizationEntry queue="eetour.test.manual.server1" read="tms" write="tmc" admin="admins" /> <authorizationEntry queue="eetour.test.manual.server2" read="tms" write="tmc" admin="admins" /> <authorizationEntry queue="eetour.production.services.soloplan" read="pss" write="pv" admin="admins" /> <authorizationEntry queue="eetour.production.services.chargingstationhub" read="pss" write="pcs" admin="admins" /> <authorizationEntry queue="eetour.production.chargingstations.00" read="pcs00" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.chargingstations.01" read="pcs01" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.chargingstations.02" read="pcs02" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.chargingstations.03" read="pcs03" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.chargingstations.04" read="pcs04" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.chargingstations.05" read="pcs05" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.chargingstations.06" read="pcs06" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.chargingstations.07" read="pcs07" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.chargingstations.08" read="pcs08" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.chargingstations.09" read="pcs09" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.chargingstations.10" read="pcs10" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.chargingstations.11" read="pcs11" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.chargingstations.12" read="pcs12" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.chargingstations.13" read="pcs13" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.chargingstations.14" read="pcs14" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.00" read="pv00" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.01" read="pv01" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.02" read="pv02" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.03" read="pv03" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.04" read="pv04" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.05" read="pv05" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.06" read="pv06" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.07" read="pv07" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.08" read="pv08" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.09" read="pv09" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.10" read="pv10" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.11" read="pv11" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.12" read="pv12" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.13" read="pv13" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.14" read="pv14" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.15" read="pv15" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.16" read="pv16" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.17" read="pv17" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.18" read="pv18" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.19" read="pv19" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.20" read="pv20" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.21" read="pv21" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.22" read="pv22" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.23" read="pv23" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.24" read="pv24" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.25" read="pv25" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.26" read="pv26" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.27" read="pv27" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.28" read="pv28" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.29" read="pv29" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.30" read="pv30" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.31" read="pv31" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.32" read="pv32" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.33" read="pv33" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.34" read="pv34" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.35" read="pv35" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.36" read="pv36" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.37" read="pv37" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.38" read="pv38" write="pss" admin="admins" /> <authorizationEntry queue="eetour.production.vehicles.39" read="pv39" write="pss" admin="admins" /> </authorizationEntries> <!-- let's assign roles to temporary destinations. comment this entry if we don't want any roles assigned to temp destinations --> <tempDestinationAuthorizationEntry> <tempDestinationAuthorizationEntry read="tempDestinationAdmins" write="tempDestinationAdmins" admin="tempDestinationAdmins"/> </tempDestinationAuthorizationEntry> </authorizationMap> </map> </authorizationPlugin> <bean xmlns="http://www.springframework.org/schema/beans" id="forcePersistencyModeBroker" class="org.apache.activemq.plugin.ForcePersistencyModeBrokerPlugin"> <property name="persistenceFlag" value="true"/> </bean> </plugins> <!-- The systemUsage controls the maximum amount of space the broker will use before slowing down producers. For more information, see: http://activemq.apache.org/producer-flow-control.html If using ActiveMQ embedded - the following limits could safely be used: <systemUsage> <systemUsage> <memoryUsage> <memoryUsage limit="20 mb"/> </memoryUsage> <storeUsage> <storeUsage limit="1 gb"/> </storeUsage> <tempUsage> <tempUsage limit="100 mb"/> </tempUsage> </systemUsage> </systemUsage> --> <systemUsage> <systemUsage> <memoryUsage> <memoryUsage limit="64 mb"/> </memoryUsage> <storeUsage> <storeUsage limit="100 gb"/> </storeUsage> <tempUsage> <tempUsage limit="50 gb"/> </tempUsage> </systemUsage> </systemUsage> <sslContext> <sslContext keyStore="file:$ {activemq.base}/conf/broker.ks" keyStorepassword="topsecret" trustStore="file:${activemq.base} /conf/broker.ts" trustStorepassword="topsecret"/> </sslContext> <!-- The transport connectors expose ActiveMQ over a given protocol to clients and other brokers. For more information, see: http://activemq.apache.org/configuring-transports.html --> <transportConnectors> <!- transportConnector name="openwire" uri="tcp://localhost:61616"/ -> <transportConnector name="stomp+ssl" uri="stomp+ssl://entwicklung031.soloplan.de:61614"/> <transportConnector name="stomp" uri="stomp://entwicklung031.soloplan.de:61613"/> </transportConnectors> </broker> <!-- Enable web consoles, REST and Ajax APIs and demos Take a look at $ {ACTIVEMQ_HOME} /conf/jetty.xml for more details --> <import resource="jetty.xml"/> </beans> <!-- END SNIPPET: example -->
        Hide
        Timothy Bish added a comment -

        Can you supply the broker configuration that's in use when these frames are sent?

        Show
        Timothy Bish added a comment - Can you supply the broker configuration that's in use when these frames are sent?
        Hide
        Andreas Ländle added a comment -

        Network capturing of a simple STOMP conversation between a client and a server. While communication with server in version v5.5 looks good, v5.6 log shows multiple/repeated error frames.

        Show
        Andreas Ländle added a comment - Network capturing of a simple STOMP conversation between a client and a server. While communication with server in version v5.5 looks good, v5.6 log shows multiple/repeated error frames.

          People

          • Assignee:
            Unassigned
            Reporter:
            Andreas Ländle
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development