activeMQ入门

MQ作用:http://blog.youkuaiyun.com/qq_32331997/article/details/77967319

1.首先需要去官网下载activeMQ:MQ官方下载地址



1.1 activemq.bat 我这里是64位系统,点击启动mq服务,启动后不能关闭窗口

1.2 InstallService.bat 安装 mq 服务,自己可以设置自动启动,然后下次开机就自动启动mq服务了


1.3 activeMQ 发送消息主要有两种 “主题模式”,“队列模式”

1.3.1区别:

主题模式:若我现在发送100条消息,打开两个监听器来接消息,则两个监听器都会接收到100条数据

队列模式:若我现在发送100条消息,打开两个监听器来接消息,则两个监听器平分数据,每个就收50条


1.4 创建一个maven项目

向 pom 文件导入包

<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-all</artifactId>
    <version>5.15.0</version>
</dependency>

1.4 创建一个消息发送者:AppProducer (队列模式)
package com.spf.activemq.queue;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

/** 消息提供者
 * Author : ShuPF
 */
public class AppProducer {

    public static final String URL = "tcp://192.168.1.125:61616";
    public static final String queueName = "queue-test";

    public static void main(String[] args) throws JMSException {
        //1.创建连接工厂
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(URL);
        //2.创建连接
        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.stop();
    }

}

1.5 消息接收者 AppCustomer

package com.spf.activemq.queue;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

/**
 * Author : ShuPF
 */
public class AppCustomer {

    public static final String URL = "tcp://192.168.1.125:61616";
    public static final String queueName = "queue-test";

    public static void main(String[] args) throws JMSException {
        //1.创建连接工厂
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(URL);
        //2.创建连接
        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 textMessage = (TextMessage) message;
                try {
                    System.out.println("接收消息成功"+textMessage.getText());
                } catch (JMSException e) {
                    e.printStackTrace();
                }
            }
        });
        //connection.stop();
    }

}
1.6 运行main方法测试 我们把 AppCustomer 运行两次看看效果
 



如图我们可以看出在队列模式下,接收消息方把消息平分接收了
 
1.7 测试主题模式下的消息发送 两个类需要修改的地方如下
	public static final String queueName = "queue-test";
	改为:
	public static final String topicName = "topic-test";
   
	Destination destination = session.createQueue(queueName);
	改为:
	Destination destination = session.createTopic(topicName)

注意:主题模式需要先订阅消息才能接收到消息:所以需要先启动 AppCustomer 再启动 AppProducer 
	


如图:主题模式下我们可以看出,每个消息的订阅者都会把所有消息都接收一遍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值