您的位置:首页 > 其它

ActiveMQ的简单使用

2016-07-15 15:35 411 查看
ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ
是一个完全支持JMS1.1和J2EE 1.4规范的
JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。

应用的协议包括: OpenWire,Stomp REST,WS Notification,XMPP

支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA

ActiveMQ支持与Spring集成

 

支持的消息模式包括点对点、发布者与订阅。

 

1、  创建简单的消息发送与接受

1.1、       创建一个消息生产者

2.      publicstaticvoidmain(String[]
args){
3.         
4.          ConnectionFactory connectionFactory;
// 连接工厂
5.          Connection connection =
null;//
连接
6.          Session
session; // 会话接受或者发送消息的线程
7.          Destination destination;
// 消息的目的地
8.          MessageProducer messageProducer;
// 消息生产者
9.         
10.         // 实例化连接工厂
11.         connectionFactory=newActiveMQConnectionFactory(JMSProducer.USERNAME, JMSProducer.PASSWORD,
JMSProducer.BROKEURL);
12.        
13.         try{
14.             connection=connectionFactory.createConnection();//
通过连接工厂获取连接
15.             connection.start();
// 启动连接
16.             session=connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);//
创建Session
17.             destination=session.createQueue("MessageQueue1");
// 创建消息队列
18.             messageProducer=session.createProducer(destination);
// 创建消息生产者
19.             sendMessage(session,messageProducer);//
发送消息
20.             session.commit();
21.         } catch (Exception
e){
22.             // TODO Auto-generated catchblock
23.             e.printStackTrace();
24.         } finally{
25.             if(connection!=null){
26.                 try {
27.                     connection.close();
28.                 } catch (JMSException
e){
29.                     // TODO Auto-generated catchblock
30.                     e.printStackTrace();
31.                 }
32.             }
33.         }
34.     }
35.    
36.     /**
37.      * 发送消息
38.      * @param session
39.      * @param messageProducer
40.      * @throws Exception
41.      */
42.     publicstaticvoidsendMessage(Session
session,MessageProducermessageProducer)throws Exception{
43.         for(int
i=0;i<10;i++){
44.             TextMessage message=session.createTextMessage("ActiveMQ
发送的消息"+i);
45.             System.out.println("发送第" +
i + "条消息" );
46.             messageProducer.send(message);
47.         }
48.         }

 

发送成功在可以在控制台查看消息数

2.2、创建一个消费者

    public
static void
main(String[]
args) {
        ConnectionFactoryconnectionFactory;//
连接工厂
        Connectionconnection=
null
;//
连接
        Sessionsession;//
会话接受或者发送消息的线程
        Destinationdestination;//
消息的目的地
        MessageConsumermessageConsumer;
// 消息的消费者
       
        // 实例化连接工厂
        connectionFactory=newActiveMQConnectionFactory(JMSConsumer2.USERNAME, JMSConsumer2.PASSWORD,
JMSConsumer2.BROKEURL);
               
        try {
            connection=connectionFactory.createConnection(); 
// 通过连接工厂获取连接
            connection.start();
// 启动连接
            session=connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);//
创建Session
            destination=session.createQueue("MessageQueue1"); 
// 创建连接的消息队列
            messageConsumer=session.createConsumer(destination);
// 创建消息消费者
            messageConsumer.setMessageListener(new Listener());
// 注册消息监听
        }catch(JMSException
e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

此时的控制台

1、 ActiveMQ消息的发布与订阅。

首先需要创建多个订阅者,而订阅者应该先订阅消息。

    public
static void
main(String[]
args) {
        ConnectionFactoryconnectionFactory;//
连接工厂
        Connectionconnection=
null
;//
连接
        Sessionsession;//
会话接受或者发送消息的线程
        Destinationdestination;//
消息的目的地
        MessageConsumermessageConsumer;//
消息的消费者
       
        // 实例化连接工厂
        connectionFactory=newActiveMQConnectionFactory(JMSConsumer.USERNAME, JMSConsumer.PASSWORD,
JMSConsumer.BROKEURL);
               
        try {
            connection=connectionFactory.createConnection(); 
// 通过连接工厂获取连接
            connection.start();
// 启动连接
            session=connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);//
创建Session
            destination=session.createTopic("TopicMessge");
            messageConsumer=session.createConsumer(destination);
// 创建消息消费者
            messageConsumer.setMessageListener(new Listener());
// 注册消息监听
        }catch(JMSException
e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
}

这里可以创建多个订阅者,代码可以一样。然后看你的控制台。

接下来开始生产消息,代码和上面的生产差不多。只是主题需要改变下

destination=session.createTopic("TopicMessge");
messageProducer=session.createProducer(destination);

测试订阅着会同步收到消息:

管理台也会变更消息

非常简单!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: