【问题标题】:MDB Listener doesn't listen to hornetqMDB Listener 不听 hornetq
【发布时间】:2013-09-17 16:19:08
【问题描述】:

我配置了独立的 hornetq 并启动了它。创建了一个发送者类和一个 MDB 接收者类。 当我使用该方法向消费者类注册我的发件人类时, messageConsumer.setMessageListener(listener) 在发送者类本身,它工作正常。 但是当我在 jboss 应用服务器中部署我的 MDB 接收器(.war 文件!)时,它不会监听队列消息。

发件人类别:

**package com.mdas.sender;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.ObjectMessage;
import javax.jms.Queue;
import javax.jms.Session;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import org.apache.log4j.Logger;
import com.mdas.receiver.TestQueueListnerMDB;
import com.mdas.vo.JmsVO;
public class JMSSender  {
    static Logger logger = Logger.getLogger(JMSSender.class);
    // *************** Connection Factory JNDI name *************************
    public String connectionFactory;
    // *************** Queue JNDI name *************************
    public  String queueName;
    protected  ConnectionFactory tconFactory;
    protected  Connection tcon;
    protected  Session session;
    protected  MessageProducer producer;
    protected  Queue queue;
    protected MessageConsumer messageConsumer;
    protected TestQueueListnerMDB listener;
    protected InitialContext ic;

    public JMSSender(InitialContext ic, String connectionFactory, String queueName){
        this.ic = ic;
        this.connectionFactory = connectionFactory;
        this.queueName = queueName;

    }
    public void sendJms(JmsVO jmsVO) throws Exception
    {
        System.out.println("Message put in jms destination");
        ObjectMessage objectMessage  =  session.createObjectMessage();
        objectMessage.setObject(jmsVO);
        producer.send(objectMessage);
    }
    public void init() throws NamingException,
    JMSException
    {
        System.out.println("0");
        tconFactory = (ConnectionFactory) ic.lookup(connectionFactory);
        System.out.println("1");
        tcon = tconFactory.createConnection();
        System.out.println("2");
        session = tcon.createSession(false, Session.CLIENT_ACKNOWLEDGE);
        System.out.println("3");
        queue = (Queue) ic.lookup(queueName);
        System.out.println("4");
        producer = session.createProducer(queue);
        System.out.println("5");
        /*messageConsumer = session.createConsumer(queue);
        listener = new TestQueueListnerMDB();
        messageConsumer.setMessageListener(listener);*/
        tcon.start();

    }
    public void closeQueueConnections(){
        System.out.println("<<<< start closeQueueConnections >>>>>");
        try {
            producer.close();
            //messageConsumer.close();
            session.close();
            tcon.close();
            System.out.println("<<<< end closeQueueConnections successfully >>>>>");
        } catch (Exception e) {
            logger.error("Error in closeQueueConnections()", e);
        }
    }
}**

接收器类:

package com.mdas.receiver;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.EJBException;
import javax.ejb.MessageDriven;
import javax.ejb.MessageDrivenBean;
import javax.ejb.MessageDrivenContext;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.ejb.TransactionManagement;
import javax.ejb.TransactionManagementType;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;

import org.apache.log4j.Logger;
import org.jboss.ejb3.annotation.ResourceAdapter;

import com.mdas.vo.JmsVO;



@MessageDriven(
        activationConfig = { @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
                @ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/TestQueue"),
                @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"), 
                @ActivationConfigProperty(propertyName = "maxSession", propertyValue = "100"),
                @ActivationConfigProperty(propertyName = "hostName", propertyValue = "localhost"),
                @ActivationConfigProperty(propertyName = "port", propertyValue = "5455")
                })
       @TransactionManagement(value = TransactionManagementType.CONTAINER)
       @TransactionAttribute(value = TransactionAttributeType.NOT_SUPPORTED)
       @ResourceAdapter("hornetq-ra.rar")
public class TestQueueListnerMDB implements MessageListener, MessageDrivenBean{

private static final long serialVersionUID = 1L;

    static Logger logger = Logger.getLogger(TestQueueListnerMDB.class);

        public TestQueueListnerMDB() {
            logger.info("Snmp MDB Created :: " + this);
            System.out.println("Snmp MDB Created :: " + this);
        }

         public void onMessage(Message message) {
             try
             {
            System.out.println("Entered in onMessage::: ");
            logger.info("Trap Received In Processor ::: ");

            ObjectMessage objectMessage  =  (ObjectMessage)message;
            JmsVO received = (JmsVO)objectMessage.getObject();
            System.out.println(received.getText());
            message.acknowledge();

             }
             catch (Exception e)
             {
                 logger.error("Error in receiving alarm from queue", e);

             }finally{

             }

        }

        public void ejbRemove() throws EJBException {
            logger.info("QueueListnerMDB is being removed");
        }

        public void setMessageDrivenContext(MessageDrivenContext messageDrivenContext) throws EJBException {

        }
}

【问题讨论】:

  • 不知道JBoss版本(或wildfly版本)和HornetQ的版本很难帮助
  • 我会说如果不知道版本就无法提供帮助..请编辑您的问题添加信息
  • 如果你不提供版本信息..我会标记这个被删除。到目前为止,如果没有这些信息(HornetQ 和 JBoss 的版本,以及您看到的错误),这个问题是毫无意义的

标签: jboss hornetq


【解决方案1】:

你的问题表述得不好,但让我试试……

为了给你一个正确的答案,我需要更多信息来了解你的服务器在哪里(它是远程的),以及你使用的是什么版本。

通常您只需指定远程服务器即可。你有一些关于 HornetQ 文档的信息:

http://docs.jboss.org/hornetq/2.2.2.Final/user-manual/en/html/appserver-integration.html#d0e8389

如果您向我提供更多信息(错误、版本),我可能会尝试为您提供更好的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多