4 Replies Latest reply on Sep 11, 2013 10:39 AM by seacuke23

    Subscribing to topic on different AS version

    seacuke23 Newbie

      I have a simple publisher/subscriber that I'm trying to get working across different servers.  I need a subscriber MDB to run on a JBoss EAP 6.1 server being driven by a topic on a JBoss 7.1.1 server.  My hornetq versions appear to be 2.3.1.Final-redhat-1 on EAP and 2.2.13.Final on 7.1.1.  My simple example works as I'd expect it when I'm using either both EAP servers or both 7.1.1 servers, but when I try my desired configuration (EAP 6.1 - 7.1.1) I get the following:

       

      09:12:16,866 INFO [org.hornetq.ra] (default-threads - 1) HQ151001: Attempting to reconnect org.hornetq.ra.inflow.HornetQActivationSpec(ra=org.hornetq.ra.HornetQResourceAdapter@18

      dad2f destination=topic3 destinationType=javax.jms.Topic ack=Auto-acknowledge durable=false clientID=null user=testuser password=**** maxSession=15)


      And I never end up connecting or getting any messages in the MDB.


      My code follows:


      @Singleton
      @Startup
      public class NotifierSingleton {
        @Resource
        private TimerService ts;
        @Resource(lookup = "java:/topic/mytopic3")
        private Destination d;
        @Resource(lookup = "java:/ConnectionFactory")
        private ConnectionFactory cf;
        private static final Logger l = Logger.getLogger(NotifierSingleton.class);
      
      
        @PostConstruct
        public void pc() {
        ts.createIntervalTimer(5000, 5000, new TimerConfig(null, false));
        }
      
      
        @Timeout
        public void timeout() {
        Connection conn = null;
        Session sess = null;
        MessageProducer mp = null;
      
      
        try {
        conn = cf.createConnection();
        sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
        mp = sess.createProducer(d);
        l.info("Sending message");
        mp.send(sess.createTextMessage("notification message"));
        }
        catch (Exception e) {
        l.error("", e);
        }
        finally {
        if (mp != null) {
        try {
        mp.close();
        }
        catch (Exception e) {
        l.error("", e);
        }
        }
        if (sess != null) {
        try {
        sess.close();
        }
        catch (Exception e) {
        l.error("", e);
        }
        }
        if (conn != null) {
        try {
        conn.close();
        }
        catch (Exception e) {
        l.error("", e);
        }
        }
        }
        }
      }
      
      
      
      
      

       

      public class MyTopicSubscriber implements MessageListener {
        private static final Logger l = Logger.getLogger(MyTopicSubscriber.class);
      
      
        /**
        * @see javax.jms.MessageListener#onMessage(javax.jms.Message)
        */
        @Override
        public void onMessage(Message arg0) {
        System.out.println("here");
        l.info("Received message - " + arg0);
        if (arg0 instanceof TextMessage) {
        try {
        l.info("Message contents - " + ((TextMessage) arg0).getText());
        }
        catch (JMSException e) {
        l.error("Failed to get text from message.", e);
        }
        }
        }
      }
        }
      
      
      
      
      

       

      <?xml version="1.0" encoding="UTF-8"?>
      <ejb-jar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://java.sun.com/xml/ns/javaee" xmlns:ejb="http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd"
        version="3.1">
        <display-name>TopicSubscription</display-name>
        <enterprise-beans>
        <message-driven>
        <ejb-name>TopicSubscriber</ejb-name>
        <ejb-class>com.marcdejose.test.TopicSubscription.MyTopicSubscriber</ejb-class>
        <activation-config>
        <activation-config-property>
        <activation-config-property-name>destinationType</activation-config-property-name>
        <activation-config-property-value>javax.jms.Topic</activation-config-property-value>
        </activation-config-property>
        <activation-config-property>
        <activation-config-property-name>destination</activation-config-property-name>
        <activation-config-property-value>topic3</activation-config-property-value>
        </activation-config-property>
        <activation-config-property>
        <activation-config-property-name>connectorClassName</activation-config-property-name>
        <activation-config-property-value>org.hornetq.core.remoting.impl.netty.NettyConnectorFactory</activation-config-property-value>
        </activation-config-property>
        <activation-config-property>
        <activation-config-property-name>connectionParameters</activation-config-property-name>
        <activation-config-property-value>host=localhost;port=5545</activation-config-property-value>
        </activation-config-property>
        <activation-config-property>
        <activation-config-property-name>user</activation-config-property-name>
        <activation-config-property-value>testuser</activation-config-property-value>
        </activation-config-property>
        <activation-config-property>
        <activation-config-property-name>password</activation-config-property-name>
        <activation-config-property-value>testpass</activation-config-property-value>
        </activation-config-property>
        </activation-config>
        </message-driven>
        </enterprise-beans>
      </ejb-jar>
      
      
      
      
      

       

      I thought maybe I should try driving my MDB from the resource adapter from the same version of HornetQ as I have running on 7.1.1, but believe I ran into this bug:

       

      https://issues.jboss.org/browse/HORNETQ-1030?page=com.atlassian.jirafisheyeplugin:fisheye-issuepanel


      Do I have something misconfigured? Should I expect my MDB on EAP to work with the libraries in place or is it correct that I should be using the HornetQ RA with the same version? Should I have posted this in the AS forum?