ActiveMQ的简单使用

本文介绍如何使用 ActiveMQ 实现简单的消息发送与接收,包括点对点及发布订阅模式,并提供 Java 示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ActiveMQ Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1J2EE 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);

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


管理台也会变更消息

非常简单!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值