文档章节

activeMQ发送消息producer和消费消息consumer

爱运动的小乌龟
 爱运动的小乌龟
发布于 2017/06/24 23:47
字数 432
阅读 89
收藏 0

一、启动ActiveMQ

二、把下的activeMQ的lib下的所有jar添加到项目中

三、producer 生产者功能:

package apache.activemq.test.produce.consumer;

import javax.jms.Connection;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageProducer;
import javax.jms.Session;

import org.apache.activemq.ActiveMQConnectionFactory;

public class MQProducer {
    /**
     * activeMQ生产者
     * producer 生产者负责向activeMQ的队列中发送消息
     * 
     */
    //定义链接地址。
    private static final String url="tcp://localhost:61616";
    //指定消息发送的目的队列,如果这个队列不存在,程序启动的时候也会自动创建。
    private static final String QUEUE_NAME="001test";
    public void activeMqProducer(){
        do{
        try {
            //从连接工厂获取一个连接
            ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(url);
            Connection connection = activeMQConnectionFactory.createConnection();
            //开启连接
            connection.start();
            //通过连接获取一个回话对象
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            //指定消息的目的地
            Destination destination=session.createQueue(QUEUE_NAME);
            //通过回话对象获取一个生产者对象
            MessageProducer producer = session.createProducer(destination);
            //对发送的消息进行持久化保存
            producer.setDeliveryMode(DeliveryMode.PERSISTENT);
            //封装消息,并发送消息到目的队列中
            String msg="";
            for(int i=0;i<30;i++){
                msg="第"+i+"条信息...";
                System.out.println(msg);
                Message message = session.createTextMessage(msg);
                producer.send(message);
            }
            producer.close();
            connection.close();
            session.commit();
            
        
        
        } catch (JMSException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        }while(true);//保证生产者不停的进行生产
    }

}
发送完的结果:

四、消费者程序:

package apache.activemq.test.produce.consumer;

import java.util.ArrayList;

import javax.jms.Connection;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;

public class MQConsumer {
    private static final String url="tcp://localhost:61616";
    private static final String QUEUE_NAME="001test";
    public void activeMQConsumer(){
        ArrayList<String> list = new ArrayList<String>();
        int count=0;
        
        try {
            ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(url);
            Connection connection = activeMQConnectionFactory.createConnection();
            connection.start();
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            Destination destination = session.createQueue(QUEUE_NAME);
            MessageConsumer consumer = session.createConsumer(destination);
            do{
                //循环消费所有数据
            Message msg = consumer.receive(100);
            if(msg instanceof TextMessage){
                String message=((TextMessage) msg).getText();
                list.add(message);
                count++;
                if(count==10){
                    for(int i=0;i<10;i++){
                        System.out.println(list.get(i));
                    }
                    count=0;
                }
                
            }
            }while(true);
        
        } catch (JMSException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }

}
 

消费后的队列:

© 著作权归作者所有

爱运动的小乌龟
粉丝 3
博文 149
码字总数 43760
作品 0
朝阳
私信 提问
ActiveMQ专题2: 持久化

AMQ的持久化问题 前言 前面一篇AMQ专题中,我们发现对于Topic这种类型的消息,即使将deliveryMode设置为持久化,只要生产者在消费者之前启动。消息生产者发布的消息还是会丢失。这是符合JMS...

槟城码农
2018/08/30
0
0
activemq重启时,Consumer进程必须重新加载才能收到消息

情况是这样的,如果先启动activemq,然后再启动Producer和Consumer,消息可以收到。此时,如果命令行关闭activemq,Producer立马会报错,这很正常,因为connection连不上了嘛。然后Consumer和l...

Nykko
2016/01/06
1K
2
ActiveMQ初探(1)——介绍与基本使用

一、ActiveMQ 1.1 什么是ActiveMQ 是Apache出品,最流行的,能力强劲的。ActiveMQ是一个完全支持和规范的 实现,尽管规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊...

yuanlaijike
2018/04/15
0
0
ActiveMQ RabbitMQ KafKa对比

前言: ActiveMQ和 RabbitMq 以及Kafka在之前的项目中都有陆续使用过,当然对于三者没有进行过具体的对比,以下摘抄了一些网上关于这三者的对比情况,我自己看过之后感觉还 是可以的,比较清...

xiaomin0322
2018/05/11
351
0
ActiveMQ初探(3)——与SpringBoot整合

在上一章:ActiveMQ(2)——与Spring整合中,我们已经完成了ActiveMQ与Spring进行整合,本章将进行与SpringBoot整合。 发送即时消息 Step1:添加依赖包: 这里我们不使用网上大多数的,因为...

yuanlaijike
2018/05/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
5
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部