• ActiveMQ的入门demo


     

    步骤: 

    1 :下载ActiveMQ 

    官网:http://activemq.apache.org/

    2 :解压AcitveMQ,

    根据自己的操作系统选择运行win64或者win32下的activemq.bat,双击运行。注意:千万不能选择bin目录下的activemq.bat,这样会闪退。

    我的解压目录为:

    3:创建Java项目:

    引入jar包。注意:不能少了hawtbuf-1.11.jar这个包,这个包是不能缺少的。

    目录结构如图:

    4:登录本地的MQ服务:

    登录地址:http://localhost:8161/

    初始账号以及密码:admin,admin

    截图如下:

    登录后的界面如下:

    5:代码实现:

    Sender.java:

     1 package com.lm.activemq;
     2 
     3 import javax.jms.Connection;
     4 import javax.jms.ConnectionFactory;
     5 import javax.jms.DeliveryMode;
     6 import javax.jms.Destination;
     7 import javax.jms.MessageProducer;
     8 import javax.jms.Session;
     9 import javax.jms.TextMessage;
    10 import org.apache.activemq.ActiveMQConnection;
    11 import org.apache.activemq.ActiveMQConnectionFactory;
    12 /**
    13  * 
    14  * @author Wei
    15  * @time  2016年12月28日 下午8:37:38
    16  * 参考:http://heisetoufa.iteye.com/blog/1908335
    17  */
    18 public class Sender {
    19     private static final int SEND_NUMBER = 5;
    20 
    21     public static void main(String[] args) {
    22         // ConnectionFactory :连接工厂,JMS 用它创建连接
    23         ConnectionFactory connectionFactory; // Connection :JMS 客户端到JMS
    24         // Provider 的连接
    25         Connection connection = null; // Session: 一个发送或接收消息的线程
    26         Session session; // Destination :消息的目的地;消息发送给谁.
    27         Destination destination; // MessageProducer:消息发送者
    28         MessageProducer producer; // TextMessage message;
    29         // 构造ConnectionFactory实例对象,此处采用ActiveMq的实现jar
    30         /*connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,
    31                 ActiveMQConnection.DEFAULT_PASSWORD, "tcp://192.168.0.104:61616");*/
    32         connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,
    33                 ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616");
    34         //打印出用户和密码
    35         System.out.println("ActiveMQConnection.DEFAULT_USER:" + ActiveMQConnection.DEFAULT_USER
    36                 + ",ActiveMQConnection.DEFAULT_PASSWORD:" + ActiveMQConnection.DEFAULT_PASSWORD);
    37         try { // 构造从工厂得到连接对象
    38             connection = connectionFactory.createConnection();
    39             // 启动
    40             connection.start();
    41             // 获取操作连接
    42             session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
    43             // 获取session注意参数值xingbo.xu-queue是一个服务器的queue,须在在ActiveMq的console配置
    44             destination = session.createQueue("foo.bar");
    45             // 得到消息生成者【发送者】
    46             producer = session.createProducer(destination);
    47             // 设置不持久化,此处学习,实际根据项目决定
    48             producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
    49             // 构造消息,此处写死,项目就是参数,或者方法获取
    50             sendMessage(session, producer);
    51             session.commit();
    52         } catch (Exception e) {
    53             e.printStackTrace();
    54         } finally {
    55             try {
    56                 if (null != connection)
    57                     connection.close();
    58             } catch (Throwable ignore) {
    59             }
    60         }
    61     }
    62 
    63     public static void sendMessage(Session session, MessageProducer producer) throws Exception {
    64         for (int i = 1; i <= SEND_NUMBER; i++) {
    65             TextMessage message = session.createTextMessage("ActiveMq 发送的消息" + i);
    66             // 发送消息到目的地方
    67 
    68             System.out.println("发送消息:" + "ActiveMq 发送的消息" + i);
    69             producer.send(message);
    70         }
    71     }
    72 }

    Receiver.java:

     1 package com.lm.activemq;
     2 
     3 
     4 import javax.jms.Connection;
     5 import javax.jms.ConnectionFactory;
     6 import javax.jms.Destination;
     7 import javax.jms.MessageConsumer;
     8 import javax.jms.Session;
     9 import javax.jms.TextMessage;
    10 import org.apache.activemq.ActiveMQConnection;
    11 import org.apache.activemq.ActiveMQConnectionFactory;
    12 /**
    13  * 
    14  * @author Wei
    15  * @time  2016年12月28日 下午8:37:51
    16  * 参考:http://heisetoufa.iteye.com/blog/1908335
    17  */
    18 public class Receiver {
    19     public static void main(String[] args) {
    20         int i = 0;
    21         
    22         // ConnectionFactory :连接工厂,JMS 用它创建连接
    23         ConnectionFactory connectionFactory;
    24         // Connection :JMS 客户端到JMS Provider 的连接
    25         Connection connection = null;
    26         // Session: 一个发送或接收消息的线程
    27         Session session;
    28         // Destination :消息的目的地;消息发送给谁.
    29         Destination destination;
    30         // 消费者,消息接收者
    31         MessageConsumer consumer;
    32         // connectionFactory = new ActiveMQConnectionFactory(
    33         // ActiveMQConnection.DEFAULT_USER,
    34         // ActiveMQConnection.DEFAULT_PASSWORD, "tcp://192.168.0.104:61616");
    35         connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,
    36                 ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616");
    37         try {
    38             // 构造从工厂得到连接对象
    39             connection = connectionFactory.createConnection();
    40             // 启动
    41             connection.start();
    42             // 获取操作连接
    43             session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);
    44             // 获取session注意参数值 foo.bar 是一个服务器的queue,须在在ActiveMq的console配置
    45             destination = session.createQueue("foo.bar");
    46             consumer = session.createConsumer(destination);
    47             while (true) {
    48                 // 设置接收者接收消息的时间,为了便于测试,这里谁定为100s
    49                 TextMessage message = (TextMessage) consumer.receive();
    50                 if (null != message) {
    51                     i++;
    52                     System.out.println("收到消息" + i +":"+ message.getText());
    53                 } else {
    54                     break;
    55                 }
    56             }
    57         } catch (Exception e) {
    58             e.printStackTrace();
    59         } finally {
    60             try {
    61                 if (null != connection)
    62                     connection.close();
    63             } catch (Throwable ignore) {
    64             }
    65         }
    66     }
    67 }

    使用 MQ编辑内容点击send按钮进行发送,

    eclipse中Receiver的控制台的输出为:

    收到消息17:Enter some text here for the message body...

    这里可以编辑发送的内容等。
    当然了,也可用过Java代码来进行消息队列的发送。

    源码:链接:http://pan.baidu.com/s/1hsskzic 密码:8bty

  • 相关阅读:
    CentOS7 安装 mysql
    redis简介以及redis集群配置
    分布式布局简述
    字符串
    接口
    接口回调
    java关键字之static
    java关键字之final
    java关键字之abstract
    memcache的配置
  • 原文地址:https://www.cnblogs.com/Sunnor/p/6230847.html
Copyright © 2020-2023  润新知