一 环境的搭建

  version为你的版本号

  如果你是普通的项目的话,创建一个lib文件夹导入相应的jar包到你的lib中,jar包为:activemq-all-{version}.jar、log4j-{version}.jar、slf4j-log4j12-{version}.jar,并且bulidpath,将jar加载到你的项目中就可以使用了。

  如果是web项目,需要将以上的jar包导入到你的web-inf的lib中,将自动加载到你的工程中。

  如果你是一个mave工程,需要修改你的pom.xml文件,添加相关的依赖:(如下)

  <dependency>
      <groupId>org.apache.activemq</groupId>
      <artifactId>activemq-all</artifactId>
      <version>{version}</version>
  </dependency>

  <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>{version}</version>
  </dependency>

  <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>{version}</version>
  </dependency>

  相应的版本可以去maven的资源库中下载:http://www.mvnrepository.com。

  导入相应的jar包之后就可以进行相应的开发了,现在我们开发发送端。创建创建一个普通的java类,名称为ActiveMqUtil

import java.util.Date;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
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;

public class ActiveMqUtil {
    
    public static void senderMessage(String message){
        //链接工厂
        ConnectionFactory connectionFactory;
        //创建链接
        Connection connection = null;
        //创建一个session
        Session session;
        //创建目的地
        Destination destination;
        //消息提供者
        MessageProducer messageProducer;
        //构造ConnectionFactory
        connectionFactory = new org.apache.activemq.ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,ActiveMQConnection.DEFAULT_PASSWORD,
                "tcp://localhost:61616");

    // 设置用户名和密码,这个用户名和密码在conf目录下的credentials.properties文件中,也可以在activemq.xml中配置,我这里是默认的,所以就注释掉了
       //connectionFactory.setUserName("应户名");
       //connectionFactory.setPassword("密码");
        try {
            //得到连接对象
            connection = connectionFactory.createConnection();
            //启动链接
            connection.start();

    // 创建Session,参数解释:
            // 第一个参数是否使用事务:当消息发送者向消息提供者(即消息代理)发送消息时,消息发送者等待消息代理的确认,没有回应则抛出异常,消息发送程序负责处理这个错误。
            // 第二个参数消息的确认模式:
            // AUTO_ACKNOWLEDGE : 指定消息提供者在每次收到消息时自动发送确认。消息只向目标发送一次,但传输过程中可能因为错误而丢失消息。
            // CLIENT_ACKNOWLEDGE : 由消息接收者确认收到消息,通过调用消息的acknowledge()方法(会通知消息提供者收到了消息)
            // DUPS_OK_ACKNOWLEDGE : 指定消息提供者在消息接收者没有确认发送时重新发送消息(这种确认模式不在乎接收者收到重复的消息)。
            session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
            //获取服务商的消息
            destination = session.createQueue("你的active里面创建的que的名称");
            //得到消息的发送者
            messageProducer = session.createProducer(destination);
            messageProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
            sendMessage(session, messageProducer,message);
            session.commit();
        } catch (JMSException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
                try {
                    if(null != connection){
                        connection.close();
                    }
                } catch (JMSException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
            }
        }
    
    }
    
    public static void sendMessage(Session session,MessageProducer messageProducer,String messages) throws JMSException{
        TextMessage message = session.createTextMessage(messages);
        //发送消息到服务器
        messageProducer.send(message);
    }
}

之后创建一个测试类,Test

  public class Test{

    public static void main(String [] args){

      ActiveMqUtil.senderMessage("发送者提供的消息!");

    }

  }

运行test的main方法,进行相应的发送。现在你可以访问你安装的activemq的页面去查看相应的信息。这个que的Number Of Consumers会多一条记录,代表发送成功。

现在发送者已经发送成功,现在我们开发接受端。创建一个类,名称为Reciver

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 Reciver {
    
    public static void main(String[] args) {
        //创建工厂
        ConnectionFactory connectionFactory;
        //创建connection
        Connection connection = null;
        //创建session
        Session session;
        //创建目的地
        Destination destination;
        //消费者
        MessageConsumer consumer;
        //得到工厂
        connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,
                ActiveMQConnection.DEFAULT_PASSWORD , "tcp://localhost:61616");
        try {
            //创建链接
            connection = connectionFactory.createConnection();
            //启动
            connection.start();
            session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            //获取服务器上的消息
            destination = session.createQueue("yc-security-mq");
            consumer = session.createConsumer(destination);
            while(true){
                TextMessage message = (TextMessage) consumer.receive(100000);
                if(null != message){
                    System.out.println(message.getText());
                }else{
                    break;
                }
            }
        } catch (JMSException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            try{
                if(null != null){
                    connection.close();
                }
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    }

}

运行这个测试类,将会显示:发送者提供的消息!,这时代表接受端成功。在activemq安装的页面上,Messages Dequeued  将会增加一条。

  

ActiveMQ教程(消息发送和接受)的更多相关文章

  1. ActiveMQ实现消息的发送与接受

    activemq是apache的一个JMS接口的实现产品,java中定义了JMS规范,虽然RocketMQ,kafka现在比较火,但是还是建议先学一下activeMQ再学其他两个就容易很多 首先可以下 ...

  2. activemq安装与简单消息发送接收实例

    安装环境:Activemq5.11.1, jdk1.7(activemq5.11.1版本需要jdk升级到1.7),虚拟机: 192.168.147.131 [root@localhost softwa ...

  3. ActiveMQ点对点的消息发送案例

    公司最近会用MQ对某些业务进行处理,所以,这次我下载了apache-activemq-5.12.0-bin把玩下. 基于练习方便需要,使用Windows的版本. 参考的优秀文章: activemq的几 ...

  4. ActiveMQ(2)---ActiveMQ原理分析之消息发送

    持久化消息和非持久化消息的发送策略 消息同步发送和异步发送 ActiveMQ支持同步.异步两种发送模式将消息发送到broker上.同步发送过程中,发送者发送一条消息会阻塞直到broker反馈一个确认消 ...

  5. 【ActiveMQ】ActiveMQ在Windows的安装,以及点对点的消息发送案例

    公司最近会用MQ对某些业务进行处理,所以,这次我下载了apache-activemq-5.12.0-bin把玩下. 基于练习方便需要,使用Windows的版本. 参考的优秀文章: activemq的几 ...

  6. ActiveMQ JMS实现消息发送

    一.创建配置消息发送接收目的地. ActiveMQ中间件地址 JMS_BROKER_URL=failover://(tcp://192.168.1.231:61616) QUEUE_BUSP_TP_S ...

  7. ActiveMQ发消息和收消息

    来自:http://blog.163.com/chengwei_1104/blog/static/53645274201382315625329/ ActiveMQ 是Apache出品,最流行的,能力 ...

  8. 消息中间件--ActiveMQ&JMS消息服务

    ### 消息中间件 ### ---------- **消息中间件** 1. 消息中间件的概述 2. 消息中间件的应用场景 * 异步处理 * 应用解耦 * 流量削峰 * 消息通信   --------- ...

  9. 转 Kafka、RabbitMQ、RocketMQ等消息中间件的对比 —— 消息发送性能和优势

    Kafka.RabbitMQ.RocketMQ等消息中间件的对比 —— 消息发送性能和优势 引言 分布式系统中,我们广泛运用消息中间件进行系统间的数据交换,便于异步解耦.现在开源的消息中间件有很多,前 ...

随机推荐

  1. iClap:产品经理再忙也要看《琅琊榜》

    最先知道<琅琊榜>,是半年前偶然看了整整21分钟的<琅琊榜>片花,对麒麟才子梅长苏这一角色甚是期待,开播后每集必看,重复看,此剧果真不负众望,口碑爆棚,收视爆红,确是一部久违的 ...

  2. 【转】js获取当前日期时间“yyyy-MM-dd HH:MM:SS”

    获取当前的日期时间 格式“yyyy-MM-dd HH:MM:SS”   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 function getNowFormatD ...

  3. Hive的静态分区和动态分区

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl/p/6831884.html 转载请注明出处 虽然之前已经用过很多次hive的分区表,但是还是找时间快速回顾总结 ...

  4. 整理一些《纸书科学计算器》的小Tips

    本文最开始是在2016年的文章 Win10应用<纸书科学计算器>更新啦! 发表之后撰写的,当时那篇文章收到了不少人点赞,应用在国内市场的日下载量也突然上涨,让我感到受宠若惊,这里要感谢Wp ...

  5. 20145316许心远《Java学习笔记》第三周总结

    20145316许心远<Java程序设计>第3周学习总结 教材学习内容总结 一.定义类: 类定义时使用class关键字 如果要将x绑定到新建的对象上,可以使用"="制定 ...

  6. ISO8583

    最开始时,金融系统只有IBM这些大的公司来提供设备,象各种主机与终端等.在各个计算机设备之间,需要交换数据.我们知道数据是通过网络来传送的,而在网络上传送的数据都是基于0或1这样的二进制数据,如果没有 ...

  7. centos配置yum源为中国镜像源

    有时候CentOS默认的yum源不一定是国内镜像,导致yum在线安装及更新速度不是很理想.这时候需要将yum源设置为国内镜像站点.国内主要开源的开源镜像站点应该是网易和阿里云了. 修改CentOS默认 ...

  8. SaltStack安装zabbix-agent-第九篇

    环境 node1  192.168.56.11   角色 salt-master node2  192.168.56.12   角色  salt-minon 实现内容 使用salt远程安装zabbix ...

  9. linux 忘记登陆密码

    声明:如果不是远程登陆,机器在自己身边还有救. 第一步:重启机器,进入brug界面(grub是一个引导管理程序,可以引导linux.winxp等系统,在/boot/grub/中的menu.lst中进行 ...

  10. yum的使用

    Yum官网 Yum的缓存 Yum仓库 Yum命令 Yum插件 yum的缓存 通过缓存可以提升我们环境的搭建效率,直接把原来缓存好的安装包数据放到新环境,省去了几个G的下载,甚至,有些时候客户现场不能联 ...