ActiveMQ入门(一)

9 篇文章 0 订阅

安装:使用服务安装,不用每次启动“黑匣子”。

启动之后浏览器可以进入后台管理:

 

代码演示两种消息模式:

pom.xml:

<dependencies>
        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-core</artifactId>
            <version>5.7.0</version>
        </dependency>
    </dependencies>

队列消息模式:

生产方:

public class AppProducer {


    private static final String url = "tcp://127.0.0.1:61616";
    private static final String queueName = "queue-test";

    public static void main(String[] args) throws JMSException {

        /** 1.创建ConnectionFactory */
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);

        /** 2.创建Connection */
        Connection connection = connectionFactory.createConnection();

        /** 3.启动 */
        connection.start();

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

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

        /** 6.创建一个生产者 */
        MessageProducer producer = session.createProducer(destination);

        for (int i = 0; i < 100; i++) {
            /** 7.创建消息 */
            TextMessage textMessage = session.createTextMessage("test"+i);
            /** 8.发布消息 */
            producer.send(textMessage);

            System.out.println("发布消息"+textMessage.getText());
        }

        /** 9.关闭连接 */
        connection.close();

    }
}

运行可以看到后台:

消费方:

public class AppConsumer {
    private static final String url = "tcp://127.0.0.1:61616";
    private static final String queueName = "queue-test";

    public static void main(String[] args) throws JMSException {

        /** 1.创建ConnectionFactory */
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);

        /** 2.创建Connection */
        Connection connection = connectionFactory.createConnection();

        /** 3.启动 */
        connection.start();

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

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

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

        /** 7.创建一个监听器 */
        consumer.setMessageListener(new MessageListener() {
            public void onMessage(Message message) {
                TextMessage message1 = (TextMessage) message;
                try {
                    System.out.print("接收消息:"+message1.getText());
                } catch (JMSException e) {
                    e.printStackTrace();
                }
            }
        });


        /** 8.关闭连接 */
//        connection.close();

    }
}

多个消费者运行结果:接收的消息是不同的,基本上均摊

主题模式:
生产方:

public class AppProducer {


    private static final String url = "tcp://127.0.0.1:61616";
    private static final String topicName = "topic-test";

    public static void main(String[] args) throws JMSException {

        /** 1.创建ConnectionFactory */
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);

        /** 2.创建Connection */
        Connection connection = connectionFactory.createConnection();

        /** 3.启动 */
        connection.start();

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

        /** 5.创建目标 */
        Destination destination = session.createTopic(topicName);

        /** 6.创建一个生产者 */
        MessageProducer producer = session.createProducer(destination);

        for (int i = 0; i < 100; i++) {
            /** 7.创建消息 */
            TextMessage textMessage = session.createTextMessage("test"+i);
            /** 8.发布消息 */
            producer.send(textMessage);

            System.out.println("发布消息"+textMessage.getText());
        }

        /** 9.关闭连接 */
        connection.close();

    }
}

运行可看到: 

 

消费方:

public class AppConsumer {
    private static final String url = "tcp://127.0.0.1:61616";
    private static final String topicName = "topic-test";

    public static void main(String[] args) throws JMSException {

        /** 1.创建ConnectionFactory */
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);

        /** 2.创建Connection */
        Connection connection = connectionFactory.createConnection();

        /** 3.启动 */
        connection.start();

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

        /** 5.创建目标 */
        Destination destination = session.createTopic(topicName);

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

        /** 7.创建一个监听器 */
        consumer.setMessageListener(new MessageListener() {
            public void onMessage(Message message) {
                TextMessage message1 = (TextMessage) message;
                try {
                    System.out.print("接收消息:"+message1.getText());
                } catch (JMSException e) {
                    e.printStackTrace();
                }
            }
        });


        /** 8.关闭连接 */
//        connection.close();

    }
}

如果先发布消息,再运行消费方接收消息,消费方是接收不到任何信息的,消费方需要先订阅,才能接收到消息。

主题模式多个消费方收到全部的消息,是完全一样的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值