【消息队列

阅读: 评论:0

【消息队列

【消息队列

深入浅出JMS(三)--ActiveMQ简单的HelloWorld实例

JMS其实并没有想象的那么高大上,看完这篇博文之后,你就知道什么叫简单,下面直接进入主题。

一、开发环境

  我们使用的是ActiveMQ5.15.2 Release的Windows版,官网最新版是ActiveMQ 5.15.2 Release,大家可以自行下载

  需要注意的是,开发时候,要将apache-activemq-5.11.1-bin.zip解压缩后里面的activemq-all-5.11.1.jar包加入到classpath下面,这个包包含了所有jms接口api的实现。

二、搭建开发环境  

  1.建立项目 
  我们只需要建立一个java项目就可以了,导入jar包,项目截图: 
  

  点对点的消息模型,只需要一个消息生成者和消息消费者,下面我们编写代码。

  2.编写生产者

package com.sunny.producer;import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;public class JMSProducer {// 默认连接用户名private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;// 默认连接密码private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;// 默认连接地址private static final String BROKEURL = ActiveMQConnection.DEFAULT_BROKER_URL;// 发送的消息数量private static final int SENDNUM = 10;public static void main(String[] args) {// 连接工厂ConnectionFactory connectionFactory;// 连接Connection connection = null;// 会话 接受或者发送消息的线程Session session;// 消息的目的地Destination destination;// 消息生产者MessageProducer messageProducer;// 实例化连接工厂connectionFactory = new ActiveMQConnectionFactory(JMSProducer.USERNAME, JMSProducer.PASSWORD,JMSProducer.BROKEURL);try {// 通过连接工厂获取连接connection = ateConnection();// 启动连接connection.start();// 创建sessionsession = ateSession(true, Session.AUTO_ACKNOWLEDGE);// 创建一个名称为HelloWorld的消息队列destination = ateQueue("HelloWorld");// 创建消息生产者messageProducer = ateProducer(destination);// 发送消息sendMessage(session, messageProducer);sessionmit();} catch (Exception e) {e.printStackTrace();} finally {if (connection != null) {try {connection.close();} catch (JMSException e) {e.printStackTrace();}}}}/*** 发送消息* * @param session* @param messageProducer*            消息生产者* @throws Exception*/public static void sendMessage(Session session, MessageProducer messageProducer) throws Exception {for (int i = 0; i < JMSProducer.SENDNUM; i++) {// 创建一条文本消息TextMessage message = ateTextMessage("ActiveMQ 发送消息" + i);System.out.println("发送消息:Activemq 发送消息" + i);// 通过消息生产者发出消息messageProducer.send(message);}}
}

  3.编写消费者

package sumer;import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;public class JMSConsumer {private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;//默认连接用户名private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;//默认连接密码private static final String BROKEURL = ActiveMQConnection.DEFAULT_BROKER_URL;//默认连接地址public static void main(String[] args) {ConnectionFactory connectionFactory;//连接工厂Connection connection = null;//连接Session session;//会话 接受或者发送消息的线程Destination destination;//消息的目的地MessageConsumer messageConsumer;//消息的消费者//实例化连接工厂connectionFactory = new ActiveMQConnectionFactory(JMSConsumer.USERNAME, JMSConsumer.PASSWORD, JMSConsumer.BROKEURL);try {//通过连接工厂获取连接connection = ateConnection();//启动连接connection.start();//创建sessionsession = ateSession(false, Session.AUTO_ACKNOWLEDGE);//创建一个连接HelloWorld的消息队列destination = ateQueue("HelloWorld");//创建消息消费者messageConsumer = ateConsumer(destination);while (true) {TextMessage textMessage = (TextMessage) ive(100000);if(textMessage != null){System.out.println("收到的消息:" + Text());}else {break;}}} catch (JMSException e) {e.printStackTrace();}}
}

  4.运行

  1. 首先,启动ActiveMQ。在浏览器中输入:localhost:8161/admin/,然后开始执行:
  2. 运行发送者,eclipse控制台输出,如下图: 
     
    此时,我们先看一下ActiveMQ服务器,Queues内容如下: 

    我们可以看到创建了一个名称为HelloWorld的消息队列,队列中有10条消息未被消费,我们也可以通过Browse查看是哪些消息,如下图: 

    如果这些队列中的消息,被删除,消费者则无法消费。

  3. 我们继续运行一下消费者,eclipse控制台打印消息,如下: 
     
    此时,我们先看一下ActiveMQ服务器,Queues内容如下: 

    我们可以看到HelloWorld的消息队列发生变化,多一个消息者,队列中的10条消息被消费了,点击Browse查看,已经为空了。 
    点击Active Consumers,我们可以看到这个消费者的详细信息: 

我们的实例到此就结束了,大家可以自己多点ActiveMQ服务器的内容,进一步熟悉ActiveMQ。

 

 

 

 

 

原文地址:

 

posted @ 2017-12-01 10:51 MrSunny 阅读(...) 评论(...) 编辑 收藏

本文发布于:2024-01-28 17:03:47,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17064326308924.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:队列   消息
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23