文档章节

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

爱运动的小乌龟
 爱运动的小乌龟
发布于 2017/06/24 23:47
字数 432
阅读 33
收藏 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();
        }
        
    }

}
 

消费后的队列:

© 著作权归作者所有

共有 人打赏支持
爱运动的小乌龟
粉丝 2
博文 146
码字总数 41387
作品 0
朝阳
ActiveMQ专题2: 持久化

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

槟城码农
08/30
0
0
ActiveMQ RabbitMQ KafKa对比

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

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

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

yuanlaijike
05/08
0
0
ActiveMQ在C#中的应用

ActiveMQ是个好东东,不必多说。ActiveMQ提供多种语言支持,如Java, C, C++, C#, Ruby, Perl, Python, PHP等。由于我在windows下开发GUI,比较关心C++和C#,其中C#的ActiveMQ很简单,Apache提...

postdep
2015/08/24
0
0
ActiveMQ初探(1)——介绍与基本使用

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

yuanlaijike
04/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

学hadoop需要什么基础

最近一段时间一直在接触关于hadoop方面的内容,从刚接触时的一片空白,到现在也能够说清楚一些问题。这中间到底经历过什么只怕也就是只有经过的人才会体会到吧。前几天看到有个人问“学hadoo...

左手的倒影
12分钟前
1
0
LOADING Redis is loading the dataset in memory

Redis出现错误 LOADING Redis is loading the dataset in memory 原因是: redis中dump.rdb文件到达3G时,所有redis的操作都会抛出此异常。 解决方法: redis.conf中 maxmemory 调大。 另外一...

swingcoder
12分钟前
0
0
闪屏页设置

相信每个app都需要一个闪屏页 就是一个开始页面 对于新手来说 可能就直接一个activity 弄个背景图片 ,细心地同学也许会发现 每次启动 应用程序的时候 一开始显示的不是那个设置的背景图片 ...

王先森oO
17分钟前
1
0
解析Excel

import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import or......

开源中国封号找我
22分钟前
0
0
pandas不能在pycharm中使用plot()方法显示图像的解决方法

最近用了pycharm,感觉还不错,就是pandas中Series、DataFrame的plot()方法不显示图片就给我结束了,但是我在ipython里就能画图 以前的代码是这样的 import matplotlib.pyplot as pltfrom p...

kipeng300
26分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部