[jboss-jira] [JBoss JIRA] (WFWIP-14) [Artemis upgrade] MDB cannot connect to remote server via RA if destination is not deployed locally

Miroslav Novak (JIRA) issues at jboss.org
Tue Jun 12 04:37:00 EDT 2018


    [ https://issues.jboss.org/browse/WFWIP-14?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13589695#comment-13589695 ] 

Miroslav Novak commented on WFWIP-14:
-------------------------------------

Issue is still present in Artemis to 2.6.0 and jmesnil/WFLY-9407_upgrade_artemis_2.4.0_with_prefix (commit 54b131dc63dfd4bb74bb44b3f8c3402964059afa)


> [Artemis upgrade] MDB cannot connect to remote server via RA if destination is not deployed locally
> ---------------------------------------------------------------------------------------------------
>
>                 Key: WFWIP-14
>                 URL: https://issues.jboss.org/browse/WFWIP-14
>             Project: WildFly WIP
>          Issue Type: Bug
>          Components: JMS
>            Reporter: Erich Duda
>            Assignee: Martyn Taylor
>            Priority: Blocker
>              Labels: activemq, feature-branch-blocker
>
> For more information about origin of this issue see JBEAP-13857.
> *Scenario*
> * There are two servers called JMS servers which have deployed destinations
> * There are two servers called MDB servers which have configured RA to connect to JMS servers and have deployed MDBs
> * MDBs resend messages from InQueue to OutQueue
> *Issue:* RA on MDB servers is not able to connect to JMS servers.
> *Detailed description of the issue*
> There is an MDB with following activation config:
> {code}
> @MessageDriven(name = "mdb1",
>         activationConfig = {
>                 @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
>                 @ActivationConfigProperty(propertyName = "destination", propertyValue = "jms/queue/InQueue"),
>                 @ActivationConfigProperty(propertyName = "rebalanceConnections", propertyValue = "true"),
>                 @ActivationConfigProperty(propertyName = "hA", propertyValue = "true"),
>                 @ActivationConfigProperty(propertyName = "messageSelector", propertyValue = "color = 'RED'")})
> {code}
> In ActiveMQActivation::setupDestination method there is a code which tries to do a JNDI lookup. If it fails the destination is created using the ActiveMQJMSClient::createQueue where the destination name is created from the JNDI name.
> {code}
> try {
>                destination = (ActiveMQDestination) ActiveMQRaUtils.lookup(ctx, destinationName, destinationType);
>             } catch (Exception e) {
>                if (destinationName == null) {
>                   throw ActiveMQRABundle.BUNDLE.noDestinationName();
>                }
>                String calculatedDestinationName = destinationName.substring(destinationName.lastIndexOf('/') + 1);
>                logger.debug("Unable to retrieve " + destinationName +
>                                                 " from JNDI. Creating a new " + destinationType.getName() +
>                                                 " named " + calculatedDestinationName + " to be used by the MDB.");
>                // If there is no binding on naming, we will just create a new instance
>                if (isTopic) {
>                   destination = (ActiveMQDestination) ActiveMQJMSClient.createTopic(calculatedDestinationName);
>                } else {
>                   destination = (ActiveMQDestination) ActiveMQJMSClient.createQueue(calculatedDestinationName);
>                }
>             }
> {code}
> When the destination is not deployed locally (on the same server as MDB is deployed), the lookup fails and the destination is created using {{ActiveMQJMSClient::createQueue}} method, where {{calculatedDestinationName}} is {{InQueue}}.
> Later in the code, when RA tries to connect to the remote EAP server, it uses this destination when it creates a consumer. Since on the remote server there is no destination with core address {{InQueue}}, the request to create the consumer fails and it is being periodically retried.



--
This message was sent by Atlassian JIRA
(v7.5.0#75005)


More information about the jboss-jira mailing list