zoukankan      html  css  js  c++  java
  • ActiveMQ(2) ActiveMQ创建HelloWorld

    启动ActiveMQ:

     请参见:ActiveMQ(1) 初识ActiveMQ

    创建Maven工程:

    pom文件:

     1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     2   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     3   <modelVersion>4.0.0</modelVersion>
     4 
     5   <groupId>com.itdoc.learn</groupId>
     6   <artifactId>activemq</artifactId>
     7   <version>1.0-SNAPSHOT</version>
     8   <packaging>jar</packaging>
     9 
    10   <name>activemq</name>
    11   <url>http://maven.apache.org</url>
    12 
    13   <properties>
    14     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    15   </properties>
    16 
    17   <dependencies>
    18     <dependency>
    19       <groupId>org.apache.activemq</groupId>
    20       <artifactId>activemq-all</artifactId>
    21       <version>5.15.2</version>
    22     </dependency>
    23     <dependency>
    24       <groupId>junit</groupId>
    25       <artifactId>junit</artifactId>
    26       <version>3.8.1</version>
    27       <scope>test</scope>
    28     </dependency>
    29   </dependencies>
    30 </project>
    pom.xml

    创建消息生产者:

     1 /**
     2  * @filename Sender.Java
     3  * @desc 消息生产者
     4  * @blog http://www.cnblogs.com/goodcheap
     5  * @author Chinda Wang
     6  * @create 2017-12-02 16:06
     7  * @version v1.0
     8  * @copyright Copyright © 2017 达华信息科技有限公司 版权所有
     9  * @modifyhistory 2017-12-02 16:06
    10  * @modifyauthor Chinda Wang
    11  * @modifydesc
    12  */
    13 package com.itdoc.learn.activemq.helloworld;
    14 
    15 import org.apache.activemq.ActiveMQConnectionFactory;
    16 
    17 import javax.jms.*;
    18 
    19 /**
    20  * @author Chinda Wang
    21  * @desc 消息生产者
    22  * @create 2017-12-02 16:06
    23  */
    24 public class Sender {
    25 
    26     public static void main(String[] args) throws Exception {
    27         // 第一步: 建立 ConnectionFactory 工厂对象, 需要填入用户名、密码、以及要连接的地址, 均使用默认即可, 默认端口为"tcp//loclhost:61616"
    28         ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
    29                 ActiveMQConnectionFactory.DEFAULT_USER,
    30                 ActiveMQConnectionFactory.DEFAULT_PASSWORD,
    31                 "tcp://localhost:61616");
    32         // 第二步: 通过ConnectionFactory工厂对象创建一个Connection连接, 并且调用Connection的start方法开启连接, Connection默认是关闭的。
    33         Connection connection = connectionFactory.createConnection();
    34         connection.start();
    35         /*
    36          * 第三步: 通过Connection对象创建Session会话(上下文环境对象), 用于接收消息, 参数位置1为是否启用事务, 参数位置2为签收模式,
    37          * 一般设置为自动签收。
    38          */
    39         Session session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);
    40         /*
    41          * 第四步: 通过Session创建Destination对象, 指的是一个客户端用来指定生产消息目标和消费消息来源的对象, 在PTP模式中, Destination
    42          * 被称作为Queue, 即队列; 在Pub/Sub模式, Destination被称作Topic, 即主题。在程序中可以使用多个Queue和Topic。
    43          */
    44         Destination destination = session.createQueue("queue1");
    45         // 第五步: 需要通过Session对象创建消息的发送和接收对象(生产者和消费者)MessageProducer/MessageConsumer
    46         MessageProducer producer = session.createProducer(destination);
    47         // 第六步: 可以使用MessageProducer的setDeliveryMode()方法为其设置持久化特性和非持久化特性(DeliveryMode)。
    48         producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
    49         /*
    50          * 第七步: 使用JMS规范的TextMessage形式创建数据(通过Session对象), 并用MessageProducer的send()方法发送数据。同理, 客户端使用
    51          * receive()方法进行接收数据。
    52          */
    53         TextMessage textMessage = session.createTextMessage();
    54         for (int i = 1; i <= 10; i++) {
    55             textMessage.setText("I am Message! id: " + i);
    56             producer.send(textMessage);
    57             System.out.println("生产者: " + textMessage.getText());
    58         }
    59         // 第八步: 关闭Connection连接
    60         if (connection != null) {
    61             connection.close();
    62         }
    63     }
    64 }
    Sender.Java

     创建消息消费者:

     1 /**
     2  * @filename Receiver.Java
     3  * @desc 消息消费者
     4  * @blog http://www.cnblogs.com/goodcheap
     5  * @author Chinda Wang
     6  * @create 2017-12-02 16:07
     7  * @version v1.0
     8  * @copyright Copyright © 2017 达华信息科技有限公司 版权所有
     9  * @modifyhistory 2017-12-02 16:07
    10  * @modifyauthor Chinda Wang
    11  * @modifydesc
    12  */
    13 package com.itdoc.learn.activemq.helloworld;
    14 
    15 import org.apache.activemq.ActiveMQConnectionFactory;
    16 
    17 import javax.jms.*;
    18 
    19 /**
    20  * @desc 消息消费者
    21  * @author Chinda Wang
    22  * @create 2017-12-02 16:07
    23  */
    24 public class Receiver {
    25 
    26     public static void main(String[] args) throws Exception {
    27         // 第一步: 建立 ConnectionFactory 工厂对象, 需要填入用户名、密码、以及要连接的地址, 均使用默认即可, 默认端口为"tcp//loclhost:61616"
    28         ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
    29                 ActiveMQConnectionFactory.DEFAULT_USER,
    30                 ActiveMQConnectionFactory.DEFAULT_PASSWORD,
    31                 "tcp://localhost:61616");
    32         // 第二步: 通过ConnectionFactory工厂对象创建一个Connection连接, 并且调用Connection的start方法开启连接, Connection默认是关闭的。
    33         Connection connection = connectionFactory.createConnection();
    34         connection.start();
    35         /*
    36          * 第三步: 通过Connection对象创建Session会话(上下文环境对象), 用于接收消息, 参数位置1为是否启用事务, 参数位置2为签收模式,
    37          * 一般设置为自动签收。
    38          */
    39         Session session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);
    40         /*
    41          * 第四步: 通过Session创建Destination对象, 指的是一个客户端用来指定生产消息目标和消费消息来源的对象, 在PTP模式中, Destination
    42          * 被称作为Queue, 即队列; 在Pub/Sub模式, Destination被称作Topic, 即主题。在程序中可以使用多个Queue和Topic。
    43          */
    44         Destination destination = session.createQueue("queue1");
    45         // 第五步: 需要通过Session对象创建消息的发送和接收对象(生产者和消费者)MessageProducer/MessageConsumer
    46         MessageConsumer consumer = session.createConsumer(destination);
    47         /*
    48          * 第六步: 使用JMS规范的TextMessage形式创建数据(通过Session对象), 并用MessageProducer的send()方法发送数据。同理, 客户端使用
    49          * receive()方法进行接收数据。
    50          */
    51         while (true) {
    52             TextMessage msg = (TextMessage) consumer.receive();
    53             if (msg == null) {
    54                 break;
    55             }
    56             System.out.println("收到内容: " + msg.getText());
    57         }
    58         // 第七步: 关闭Connection连接
    59         if (connection != null) {
    60             connection.close();
    61         }
    62     }
    63 }
    Receiver.Java

    运行消息生产者,控制台输出:

    ActiveMQ消息页:

    消息生产者创建了一个名称为 queue1的消息队列, 队列中有10条消息待消费, 通过Browse查询消息详情。 

     

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

    运行消息消费者, 控制台输出:

     

     消息页:

     

  • 相关阅读:
    SharePoint Framework (SPFx) 开发入门教程
    SharePoint 2013 Designer 入门教程
    SharePoint 2013 开发教程
    SharePoint 2013 入门教程
    SharePoint Online 部署SPFx Web部件
    SharePoint Online SPFx Web部件绑定数据
    SharePoint Online 创建SPFx客户端Web部件
    SharePoint Online 配置框架(SPFx)开发环境
    SharePoint Online 创建应用程序目录
    SharePoint Online 启用 IRM
  • 原文地址:https://www.cnblogs.com/chinda/p/7977856.html
Copyright © 2011-2022 走看看