【问题标题】:Message is not receiving in JMS Simple Receiver ProgramJMS 简单接收器程序中未接收到消息
【发布时间】:2016-01-24 17:01:55
【问题描述】:

我已经创建了简单的 JMS 客户端和接收器程序。我使用过 JDk1.7 和 activeMQ 5.10.0。我的 Sender 代码正在使用 particlur 消息执行

MessageProducer mp= session.createProducer(destinatin);
Message message = session.createTextMessage("Hi Welcome to ActiveMQ Example");
      mp.send(message);
      System.out.println("Message Has Sent");
and
Receiver code My Reciver Code is this one where it is not printing anything.
and after some time it gives me error of connection timeout.Could you find out where I am creating mistake...


  ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://Name-PC:61616");

//connectin creation
Connection con = connectionFactory.createConnection();
         Session session  = con.createSession(false,Session.AUTO_ACKNOWLEDGE);
        Destination dest= new ActiveMQQueue("Test1.Queue");
        MessageConsumer Consumer = session.createConsumer(dest);
         Message message = Consumer .receive();
            System.out.println("End of Message1");
          TextMessage text = (TextMessage) message;
                System.out.println("Message" +text.getText());  

        System.out.println("End of Message");

In http://localhost:8161/admin/queues.jsp it is showing  content on
Name Test1.Queue,   Number Of Pending Messages =1,  Number Of Consumers=1   Messages Enqueued =1,but Messages Dequeued not showing anything

【问题讨论】:

    标签: jms


    【解决方案1】:

    您需要启动连接。

    这个 groovy 代码对我有用:

    factory = new ActiveMQConnectionFactory("tcp://tpmint:61616");
    dest = new ActiveMQQueue("foo.bar");
    
    conn = null;
    session = null;
    consumer = null;
    
    try {
        conn = factory.createConnection();
        println "Connected: $conn";
        session  = conn.createSession(false,Session.AUTO_ACKNOWLEDGE);
        println "Session: $session";
        consumer = session.createConsumer(dest);
        println "Consumer: $consumer";
        conn.start();
        msg = consumer.receive(1000);
        if(msg==null) println "Timeout";
        else println "Msg:$msg";
    } finally {
        if(consumer!=null) try { consumer.close(); println "Consumer Closed";} catch (e) {}
        if(session!=null) try { session.close(); println "Session Closed";} catch (e) {}
        if(conn!=null) try { conn.close(); println "Connection Closed"; } catch (e) {e.printStackTrace(System.err);}
    }
    

    输出:

    Connected: ActiveMQConnection {id=ID:tpmint-51137-1445798087365-0:8,clientId=null,started=false}
    Session: ActiveMQSession {id=ID:tpmint-51137-1445798087365-0:8:1,started=false}
    Consumer: ActiveMQMessageConsumer { value=ID:tpmint-51137-1445798087365-0:8:1:1, started=false }
    Msg:ActiveMQTextMessage {commandId = 7, responseRequired = false, messageId = ID:tpmint-58446-1445793097761-4:2:1:1:3, originalDestination = null, originalTransactionId = null, producerId = ID:tpmint-58446-1445793097761-4:2:1:1, destination = queue://foo.bar, transactionId = null, expiration = 0, timestamp = 1445798905534, arrival = 0, brokerInTime = 1445798905534, brokerOutTime = 1445802982704, correlationId = , replyTo = null, persistent = false, type = , priority = 0, groupID = null, groupSequence = 0, targetConsumerId = null, compressed = false, userID = null, content = null, marshalledProperties = org.apache.activemq.util.ByteSequence@5346e84e, dataStructure = null, redeliveryCounter = 2, size = 0, properties = {JMSXMessageCounter=1}, readOnlyProperties = true, readOnlyBody = true, droppable = false, text = hey hey}
    Consumer Closed
    Session Closed
    Connection Closed
    

    【讨论】:

    • 在我的 java 代码中,我把 connection.start();.for 新创建的 Queue.It 工作现在谢谢
    猜你喜欢
    • 2011-10-09
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 2014-05-22
    • 2015-08-16
    • 1970-01-01
    相关资源
    最近更新 更多