文档章节

ActiveMQ实现消息消费者方式一

CharlesYG
 CharlesYG
发布于 2017/05/16 07:39
字数 465
阅读 25
收藏 0

####创建ActiveMQ消息消费者

  1. 创建一个普通的Java项目。

  2. 引入ActiveMQ jar包 这里引入的是 activemq-all-5.14.5.jar 在ActiveMQ安装包里面有。

  3. 简单代码如下所示:

package com.example.activemq;

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 MQConsumer {
    public static void main(String[] args) {
        ConnectionFactory connectionFactory;//连接工厂 
        Connection connection=null;//连接
        Session session;//会话
        Destination destination;//消息目的地
        MessageConsumer  messageConsumer ;//消息消费者
        //实例化工厂
        connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, ActiveMQConnection.DEFAULT_BROKER_URL);
        try {
            connection = connectionFactory.createConnection();//创建连接
            connection.setClientID("消费者1");
            connection.start();//启动连接
            session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//这里不采用事务模式接收消息
            destination = session.createQueue("mq.queue");//创建消息目的地
            messageConsumer = session.createConsumer(destination);//创建消息消费者
            while (true) {
                TextMessage textMessage = (TextMessage) messageConsumer.receive();//无参数表示一直等待接收消息
                if(textMessage!=null){
                    System.out.println("订阅者1接收到ActiveMQ消息:"+textMessage.getText());
                }else{
                    break;
                }
            }
        } catch (JMSException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            if(connection!=null){
                try {
                    connection.close();
                } catch (JMSException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }   
        }       
    }
}

####代码解释

  1. ConnectionFactory 创建ActiveMQ服务器连接工厂
  2. connection = connectionFactory.createConnection(); 创建ActiveMQ服务器连接
  3. connection.setClientID("消费者1"); 设置连接名,这一步也不是必须的,可以忽略,ActiveMQ会自动生成一个连接名
  4. connection.start(); 启动ActiveMQ服务器连接
  5. connection.createSession(false, Session.AUTO_ACKNOWLEDGE); 创建连接会话,这里采用非事务模式接收消息
  6. Destination destination = session.createQueue("mq.queue"); 通过连接会话创建消息目的地
  7. MessageConsumer messageConsumer = session.createConsumer(destination); 通过连接会话创建消息消费者
  8. TextMessage textMessage = (TextMessage) messageConsumer.receive(); 这里表示接收消息,消息的类型有多种,可查阅相关文档,一般都会采用 TextMessage 常用的文本方式。

总结

这里主要简单得展示了如何创建一个消息消费者接收ActiveMQ消息,下一篇将介绍我们如何使用的注册监听器的方式来接收消息。

© 著作权归作者所有

CharlesYG
粉丝 1
博文 27
码字总数 28667
作品 0
闵行
高级程序员
私信 提问
初识ActiveMQ消息中间件

ActiveMQ官方网站:https://activemq.apache.org/ 关于ActiveMQ消息传递的方式详见: https://segmentfault.com/a/1190000014958916 https://www.cnblogs.com/cyfonly/p/6380860.html 本篇博......

帅得拖网速
05/12
0
0
ActiveMQ 持久化(数据库),查询队列剩余消息数、出队数的实现

《ActiveMQ 持久化(文件),查询队列剩余消息数、出队数的实现》分析了消息队列持久化保存,假如activemq服务器突然停止,服务器启动后,还可以继续查找队列中的消息。现在分析队列中的消息...

cookqq
2013/03/04
0
0
ActiveMQ 嵌入Tomcat

在一些项目中,单独开启一个ActiveMQ,对于项目实施来说有时略显繁琐。所以我们将ActiveMQ内嵌到Tomcat,Tomcat启动同时就顺带启动了ActiveMQ。由此我们需要掌握三个个重要的知识点 ActiveMQ...

_herbert
2018/08/03
0
0
分布式消息通信ActiveMQ原理-持久化策略-笔记

消息的持久化策略分析 消息持久性对于可靠消息传递来说是一种比较好的方法, 即时发送者和接受者不是同时在线或者消息中心在发送者发送消息后宕机了,在消息中心重启后仍然可以将消息发送出去...

Java搬砖工程师
2018/12/17
0
0
ActiveMQ入门,ActiveMQ与RocketMQ的对比

ActiveMQ入门 前面的文章已经写过MQ的相关概念,这里不再赘述。 1.1 ActiveMQ是什么 ActiveMQ是Apache下的开源项目,完全支持JMS1.1和J2EE1.4规范的JMS Provider实现。 1.2 ActiveMQ的特点 ...

LinkedBear
2018/08/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

lombok的一个踩坑记录

lombok的类如下所示: package com.divx.service.model.task;import com.divx.service.model.BaseTypeMedia;import lombok.Data;/** * @author wuzhilang * @Title: QuestionResult ......

无知的小狼
24分钟前
0
0
如何使用markdown

我没有导入相应的包 这个用的还是有些问题 而且显示的时候格式问题还没解决 <div class="blog_editor" style="margin: 0 auto;width:60%;height:1000px;background-color: white;"> <div s......

南桥北木
27分钟前
0
0
纯手写SpringBoot框架之注解方式启动SpringMVC容器

使用Java语言创建Tomcat容器,并且通过Tomcat执行Servlet,接下来,将会使用Java语言在SpringBoot创建内置Tomcat,使用注解方式启动SpringMVC容器。 代码实现。 1.pom.xml文件,需要依赖的jar...

Java老王
29分钟前
0
0
Presto查询引擎简单分析

Hive查询流程分析 各个组件的作用 UI(user interface)(用户接口):提交数据操作的窗口 Driver(引擎):负责接收数据操作,实现了会话句柄,并提供基于JDBC / ODBC的execute和fetch API Metas...

MobService
30分钟前
0
0
《软件架构的10个常见模式》,看完真心觉得不错

作者:半吊子全栈工匠原文链接:https://blog.csdn.net/wireless_com/article/details/89008061 企业规模的软件系统该如何设计呢?在开始写代码之前,我们需要选择一个合适的架构,这个架构...

Java干货分享
42分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部