ActiveMQ简单用法

ActiveMQ是一个流行的开源消息中间件,它支持多种协议和编程语言。在ActiveMQ中,以下是一些重要的概念:

1. ActiveMQConnectionFactory:用于创建连接到ActiveMQ服务器的连接工厂。它需要指定ActiveMQ服务器的URL和一些其他配置参数。

2. Connection:表示与ActiveMQ服务器的连接。它是线程安全的,可以在多个线程之间共享。

3. Session:表示一个会话,用于发送和接收消息。它是线程安全的,可以在多个线程之间共享。

4. Destination:表示消息的目标,可以是队列(Queue)或主题(Topic)。

5. MessageProducer:用于发送消息到ActiveMQ服务器。它需要指定目标(Destination)和消息内容。

6. MessageConsumer:这是用于接收消息的消费者对象。它可以从指定的Destination(目标)中接收消息。

生产者示例代码:

import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;

public class ActiveMQExample {
    public static void main(String[] args) {
        // 设置ActiveMQ连接的URL
        String brokerURL = "tcp://localhost:61616";
        // 设置账号和密码
        String username = "张三";
        String password = "1234";

        try {
            // 创建ActiveMQ连接工厂
            ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerURL);
            // 设置账号和密码
            connectionFactory.setUserName(username);
            connectionFactory.setPassword(password);

            // 创建连接
            Connection connection = connectionFactory.createConnection();
            // 启动连接
            connection.start();

            // 创建会话
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

            // 创建队列
            Destination destination = session.createQueue("myQueue");
            // 创建目标(如果是topic就用这个)
            //Destination destination = session.createTopic("example.topic");

            // 创建消息生产者
            MessageProducer producer = session.createProducer(destination);

            // 创建消息
            TextMessage message = session.createTextMessage("Hello, ActiveMQ!");

            // 发送消息
            producer.send(message);

            // 关闭连接
            connection.close();
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
}

先创建了一个ActiveMQConnectionFactory对象,并设置了连接的URL、用户名和密码。然后,创建了一个Connection对象,并启动了连接。接下来,创建了一个Session对象,创建了一个Queue类型的Destination。然后,创建了一个MessageProducer对象,并使用它发送了一条消息。最后,关闭了连接。

消费者示例代码:

import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;

public class ActiveMQConsumerExample {
    public static void main(String[] args) {
        String brokerURL = "tcp://localhost:61616"; // ActiveMQ服务器的URL
        String queueName = "myQueue"; // 队列的名称
        String username = "张三"; // 账号
        String password = "1234"; // 密码

        try {
            // 创建连接工厂
            ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerURL);

            // 创建连接
            Connection connection = connectionFactory.createConnection(username, password);
            connection.start();

            // 创建会话
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

            // 创建目标
            Destination destination = session.createQueue(queueName);

           // 创建主题(如果是topic的话就用这个)
          // Destination destination = session.createTopic("test.topic");

            // 创建消费者
            MessageConsumer consumer = session.createConsumer(destination);

            // 接收消息
            consumer.setMessageListener(new MessageListener() {
                public void onMessage(Message message) {
                    try {
                        if (message instanceof TextMessage) {
                            TextMessage textMessage = (TextMessage) message;
                            System.out.println("Received message: " + textMessage.getText());
                        }
                    } catch (JMSException e) {
                        e.printStackTrace();
                    }
                }
            });

            // 等待接收消息
            Thread.sleep(10000);

            // 关闭连接
            consumer.close();
            session.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在上面的示例代码中,首先创建了一个ActiveMQConnectionFactory对象,然后使用该对象创建一个Connection对象。接下来,创建一个Session对象,并使用该对象创建一个Queue类型的Destination对象。然后,使用Session对象创建一个MessageConsumer对象,并设置一个MessageListener来接收消息。最后,等待一段时间来接收消息,然后关闭连接。

你可能感兴趣的:(activemq)