java - MessageConsumer接收方法未从远程机器队列读取消息

标签 java activemq

public class MessageReceiver {
    // URL of the JMS server
    private static String url = "tcp://atuleusbduv012.aemud.com:61616";
    // default broker URL is : tcp://localhost:61616"
    // Name of the queue we will receive messages from
    private static String subject = "activemq.test.incoming.master"; 
    // Queue Name.You can create any/many queue names as per your requirement.
    public static void main(String[] args) throws JMSException, InterruptedException {
        // Getting JMS connection from the server
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("agile","123456789",url);
        //ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
        Connection connection = connectionFactory.createConnection();
        connection.start();
        // Creating session for sending messages
        Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
        System.out.println("session :: "+session.toString());
        // Getting the queue 'amd.tmpesb.sapphire.incoming.master'
        Destination destination = session.createQueue(subject);
        System.out.println("destination :: "+destination.toString());       
        // MessageConsumer is used for receiving (consuming) messages
        MessageConsumer consumer = session.createConsumer(destination);
        System.out.println("consumer :: "+consumer.toString()); 
        // Here we receive the message.
        Message message = consumer.receive();
        System.out.println("message :: "+message.toString());
        // We will be using TestMessage in our example. MessageProducer sent us a TextMessage
        // so we must cast to it to get access to its .getText() method.
        if (message instanceof TextMessage) {
            TextMessage textMessage = (TextMessage) message;
            System.out.println("Received message '" + textMessage.getText() + "'");
        }
        connection.close();
    }
}

上面的代码没有从队列中读取消息,当我调试java类时,我发现,“执行在 consumer.receive(); 方法处停止,即它不断尝试读取消息但无法阅读。 请让我知道,我在上面的 MessageReceiver 类中缺少什么

还有一些有关向上述队列发送/写入消息的更多详细信息。 我们正在使用下面的类将消息发送到队列activemq.test.incoming.master并且正在成功发送消息

public class MessageSender {    
    //URL of the JMS server. DEFAULT_BROKER_URL will just mean that JMS server is on localhost
    private static String url = "tcp://atuleusbduv012.aemud.com:61616";
    //private static String url = "tcp://localhost:61616";  
    // default broker URL is : tcp://localhost:61616"
    private static String subject = "activemq.test.incoming.master"; 
    // Queue Name.You can create any/many queue names as per your requirement.      
    public static void main(String[] args) throws JMSException {        
        // Getting JMS connection from the server and starting it
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("agile","123456789",url);
        //ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
        Connection connection = connectionFactory.createConnection();
        connection.start();     
        //Creating a non transactional session to send/receive JMS message.
        Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);         
        //Destination represents here our queue 'JCG_QUEUE' on the JMS server. 
        //The queue will be created automatically on the server.
        Destination destination = session.createQueue(subject);         
        // MessageProducer is used for sending messages to the queue.
        MessageProducer producer = session.createProducer(destination);     
        // We will send a small text message saying 'Hello World!!!' 
        TextMessage message = session.createTextMessage("Hello !!! Welcome to the world of ActiveMQ.");     
        // Here we are sending our message!
        producer.send(message);     
        System.out.println("JCG printing@@ '" + message.getText() + "'");
        connection.close();
    }
}

我请求您让我知道上面的 MessageReceiver 类中缺少什么,因为它没有从队列activemq.test.incoming.master读取消息>.

最佳答案

我使用线程概念来读取消息并将消息写入队列。 引用链接http://activemq.apache.org/hello-world.html 其中receiver可以等待一段时间才能收到消息consumer.receive(3000)并且在尝试接收等待一段时间后使用 Thread.sleep(300) 产生更多消息通过它,我们将能够在远程机器中的队列中读取和写入消息。 谢谢大家

关于java - MessageConsumer接收方法未从远程机器队列读取消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50045022/

相关文章:

java - 使用camel蓝图连接到activeMQ

java - 通过 Jms ID 选择消息的语法

java - 如何将 JavaDocs 附加到具有多个库的 .jar 文件?

c++ - 与 Mule/ActiveMQ 和 C++ Stomp 的客户端通信

java - 如何根据某些变量更改 RGB 值? (值映射颜色)

java - lwuit.html.CSSEngine.applyStyleToUIElement 的 NullPointerException(未知来源)

java - Mockito 测试用例忽略注释

java - 同一接口(interface)的Spring多重实现

java - 使用 ID 而不是 DATE 列有什么缺点吗?

java - ActiveMQ 连接被拒绝