Uploaded image for project: 'WildFly'
  1. WildFly
  2. WFLY-18396

Embedded Artemis Broker: remove compatibility mode

XMLWordPrintable

    • Icon: Feature Request Feature Request
    • Resolution: Unresolved
    • Icon: Critical Critical
    • None
    • 30.0.0.Beta1
    • JMS, Management
    • None
    • ---
    • ---

      At present, this is the current situation:

      • By default, Artemis Remote Brokers don't run in compatibility mode both on bare metal and on OpenShift (compatibility mode off = don't add legacy prefixes to queue/topic names - generally enabled by adding "anycastPrefix=jms.queue.;multicastPrefix=jms.topic." to any acceptor url in broker.xml config file)
      • By deafult, the Artemis Broker Embedded in WildFly, runs in compatibility mode (compatibility mode on = add legacy prefixes to names)

      We would like to make the behavior of the Artemis Broker Embedded in WildFly consistent with the default behavior of Artemis Brokers runing on bare metal and in OpenShift: ultimately, the goal of this RFE is making the Artemis Broker Embedded in WildFly (full and full-ha profiles), not run in compatibility mode any more;

      This might be also the occasion to adjust the behavior of the other related components and artifacts that exist in WildFly;
      The behavior of these related components would be adjusted accordingly, in order to make the user experience more straightforward and consistent across different Artemis runtime options (Artemis embedded in WF, Artemis running standalone on bare metal, Artemis running standalone on OpenShift);
      The related components and artifacts are (this list might be extened):

      • @jakarta.jms.JMSDestinationDefinition annotation
      • external-jms-queue model object
      • pooled-connection-factory model object
      • quickstart remote-helloworld-mdb

      Note on quick-start

      The fact that our quickstart remote-helloworld-mdb even uses those flags, in my opinion, is proof it would be nice to have easier defaults: the quickstart should not use enable-amq1-prefix at all, enable-amq1-prefix should be for corner cases only;

      If you modify the remote-helloworld-mdb quickstart in order to get rid of all the enable-amq1-prefix settings (thus relying entirely on defaults within WildFly), e.g. the servlet class now would define the following queue and topic:

      @JMSDestinationDefinitions(
          value = {
              @JMSDestinationDefinition(
                  name = "java:/queue/HELLOWORLDMDBQueue",
                  interfaceName = "jakarta.jms.Queue",
                  destinationName = "HelloWorldMDBQueue"
              ),
              @JMSDestinationDefinition(
                  name = "java:/topic/HELLOWORLDMDBTopic",
                  interfaceName = "jakarta.jms.Topic",
                  destinationName = "HelloWorldMDBTopic"
              )
          }
      )
      

      You'll end up having the following destinations being created on the Artemis Remote Broker with their names being prefixed with the legacy prefixes:

      • jms.queue.HelloWorldMDBQueue
      • jms.topic.HelloWorldMDBTopic

      Which is strange since the Artemis Remote Broker isn't working in compatibility mode:

      <acceptor name="artemis">tcp://0.0.0.0:61616?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;amqpMinLargeMessageSize=102400;protocols=CORE,AMQP,STOMP,HORNETQ,MQTT,OPENWIRE;useEpoll=true;amqpCredits=1000;amqpLowCredits=300;amqpDuplicateDetection=true;supportAdvisory=false;suppressInternalManagementObjects=false</acceptor>
      

      Nevertheless, the prefixes "jms.queue." and "jms.topic." end up being added to the remote destinations names!

              ehugonne1@redhat.com Emmanuel Hugonnet
              tborgato@redhat.com Tommaso Borgato
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated: