ActiveMQ 学习札记一

    Apache ActiveMQ™是最流行的开源,多协议,基于Java的消息服务器。它支持行业标准协议,因此用户可以通过广泛的语言和平台获得客户选择的好处。可以使用C,C ++,Python,.Net等连接。使用无处不在的AMQP协议集成您的多平台应用程序。使用STOMP通过websockets 在Web应用程序之间交换消息。使用MQTT管理您的IoT设备。支持您现有的JMS基础架构及其他。ActiveMQ提供强大的功能和灵活性,以支持任何消息传递用例。-----摘自

创建使用java 创建activeMQ:

一、创建ActiveMQConnectionFactory

    ActiveMQConnectionFactory是一个受管理的对象,用于创建连接。该类还实现QueueConnectionFactory基于队列的不共享消息 和 TopicConnectionFactory-基于 发布/订阅 的消息队列。您可以使用此连接创建QueueConnections和TopicConnections。

二、根据连接工厂ActiveMQConnectionFactory创建连接

   Connection connection=activeMQConnectionFactory.createConnection();

三、打开连接

   connection.start();

四、创建会话session

            /**
             * createSession:可选参数有:
             *    param1:指示是否处理会话-true/false
             *    param2:     Session.AUTO_ACKNOWLEDGE       自动确认
                             Session.CLIENT_ACKNOWLEDGE       客户端确定
                             Session.DUPS_OK_ACKNOWLEDGE    自动批量确认
             *    
             */

  Session session=connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

五、创建消息队列
            /**
             * 可以允许创建不同的消息目标
             *         Topic topic=session.createTopic(MESSAGE_NAME);//基于发布-订阅  一个消息,多个客户端消费
                    Queue queue=session.createQueue(MESSAGE_NAME);--//基于  不可重复消费的  队列型消息
             */
            Destination destination=session.createQueue(MESSAGE_NAME);

六、创建消息发布者或生产者

            MessageProducer messageProducer=session.createProducer(destination);--消息发布者

            //创建消费
            MessageConsumer consumer=session.createConsumer(destination);

七、生产者生产消息

               /**
                 * 消息类型可以有:
                 *   ObjectMessage:对象消息
                 *   TextMessage :文本类型
                 *   MapMessage :键值对类型
                 *   StreamMessage :流类型
                 *   BytesMessage :字节型
                 */
                //文本型消息
                TextMessage message=session.createTextMessage();
                //若Session.CLIENT_ACKNOWLEDGE为客户端确认。客户端接收到消息后,
                //必须调用javax.jms.Message的acknowledge方法。jms服务器才会删除消息。
                //message.acknowledge();
                message.setText("produect 发送消息 :第"+i+"次");
                //接收一个参数为Message的消息
                messageProducer.send(message);

消费者创建消息侦听,侦听生产者生产消息

            //消费者侦听消息
            consumer.setMessageListener(new MessageListener() {
                @Override
                public void onMessage(Message message) {
                    /**
                     *Message类型可以有:
                     *   ObjectMessage:对象消息
                     *   TextMessage :文本类型
                     *   MapMessage :键值对类型
                     *   StreamMessage :流类型
                     *   BytesMessage :字节型
                     */
                    try {
                        TextMessage msg=(TextMessage) message;//与消息生成这消息类型一致
                        System.out.println("客户端B  侦听到  发送者消息:"+msg.getText());
                    } catch (Exception e) {
                    }
                }
            });

八、关闭连接

 一个简单的activeMQ消息队列demo就创建好了,分别运行生产者,消费者就可看到结果,代码图:

生产者:

消费者: