ActiveMQ入门级 + 后台向前台传递消息,包括前台接收消息

废话不多说!

Spring+ActiveMQ 的代码包在这里 点击打开链接    http://download.****.net/download/qq_29080941/10249355

1. 首先下载ActiveMQ服务。本次用的是5.9版本 http://activemq.apache.org/download-archives.html 点击打开链接

    标红的activemq-all-5.9.0.jar包是后面代码需要的jar包。

ActiveMQ入门级 + 后台向前台传递消息,包括前台接收消息

2. 安装完之后打开bin目录,根据自己系统位数 -> 启动服务  activemq.bat

ActiveMQ入门级 + 后台向前台传递消息,包括前台接收消息

3.   启动完成后的界面是这样的

ActiveMQ入门级 + 后台向前台传递消息,包括前台接收消息

4. 访问 localhost:8161/admin 进入ActiveMQ管理界面  账号密码默认都是admin

ActiveMQ入门级 + 后台向前台传递消息,包括前台接收消息

5. 登录进去可以看到  Queue 代表的队列里的消息消费情况   Topic 代表订阅/发送的消息消费情况

ActiveMQ入门级 + 后台向前台传递消息,包括前台接收消息

6.  到写代码了:

    创建一个项目,把activeMQ目录里的jar文件拷到lib下  

    ActiveMQ入门级 + 后台向前台传递消息,包括前台接收消息

    创建JMSProducer.java :里面注释了很多内容  有讲解  也有其他测试代码

public class JMSProducer {

 //发送的消息数量
    private static final int SENDNUM = 10;

public static void main(String[] args){
ConnectionFactory connectionFactory;
//实例化连接工厂
        connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.1.214:61616");
Connection connection = null;
Session session = null;
Destination destination = null;
MessageProducer producer = null;
try {
connection = connectionFactory.createConnection();
//启动链接
connection.start();
/*
 * connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
 * 1、true:支持事务


为true时:paramB的值忽略, acknowledgment mode被jms服务器设置为SESSION_TRANSACTED 。  

2、false:不支持事务 

为false时:paramB的值可为Session.AUTO_ACKNOWLEDGE、Session.CLIENT_ACKNOWLEDGE、DUPS_OK_ACKNOWLEDGE其中一个。

1、Session.AUTO_ACKNOWLEDGE:为自动确认,客户端发送和接收消息不需要做额外的工作。

2、Session.CLIENT_ACKNOWLEDGE:为客户端确认。客户端接收到消息后,必须调用javax.jms.Message的acknowledge方法。jms服务器才会删除消息。 

3、DUPS_OK_ACKNOWLEDGE:允许副本的确认模式。一旦接收方应用程序的方法调用从处理消息处返回,会话对象就会确认消息的接收;而且允许重复确认。在需要考虑资源使用时,这种模式非常有效。

4、SESSION_TRANSACTED
 */
session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
//创建主题   信息存放地  前台接收的时候也要一致
destination = session.createQueue("ceshi");
// destination = session.createTopic("MyTopic");

//创建发送者对象
producer = session.createProducer(destination);

//设置持久化    PERSISTENT持久化   NON_PERSISTENT非持久化
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
//发送消息
sendMessage(session, producer);

/*  这里注释掉了  由下面静态方法发送消息的内容

                        //创建消息

textMessage = session.createTextMessage("abc");
//发送

producer.send(textMessage);*/

                        //  提交session   关闭连接

session.commit();
session.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}

}

 /**
     * 发送消息
     * @param session
     * @param messageProducer  消息生产者
     * @throws Exception
     */
    public static void sendMessage(Session session,MessageProducer messageProducer) throws Exception{
        for (int i = 0; i < 1; i++) {
            //创建一条文本消息 
            TextMessage message = session.createTextMessage("下班通知" +i);
            System.out.println("发送消息:Activemq 发送消息" + i);
            //通过消息生产者发出消息 
            messageProducer.send(message);
        }
    }
}
--------------------------

7.  在页面上用的stomp.js 来接受消息

    引入stomp.js

    <script type="text/javascript">
     var url = "ws://localhost:61614/stomp"; 
     var login = "admin";
     var passcode = "admin";
     //监听的队列
     //需要和发送者的发送的队列名称一致否则无法接受到数据
     destination = "ceshi";
     client = Stomp.client(url);
     var onconnect = function(frame) {
       client.subscribe(destination, function(message) {
          console.log(message.body);
              alert(message.body);        
       });
     };
     client.connect(login, passcode, onconnect);
    </script>

---------------------------------
好了 ,这样就可以运行JMSProducer.java 发送消息   并且在前台页面接收到消息了  快试一下吧。