文档章节

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

爱运动的小乌龟
 爱运动的小乌龟
发布于 2017/06/24 23:47
字数 432
阅读 51
收藏 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
博文 147
码字总数 41882
作品 0
朝阳
私信 提问
ActiveMQ专题2: 持久化

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

槟城码农
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
04/15
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

没有更多内容

加载失败,请刷新页面

加载更多

MySQL 主从同步

MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的 MySQL主从是基于binlog的,主上须开启bin...

野雪球
11分钟前
0
0
OSChina 周一乱弹 —— 温柔的人应该这样

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @clouddyy :#每日一歌# 《フィクション-sumika》 《フィクション-sumika》 手机党少年们想听歌,请使劲儿戳(这里) 假期时间干嘛去, @for...

小小编辑
今天
76
6
[LintCode] Serialize and Deserialize Binary Tree(二叉树的序列化和反序列化)

描述 设计一个算法,并编写代码来序列化和反序列化二叉树。将树写入一个文件被称为“序列化”,读取文件后重建同样的二叉树被称为“反序列化”。 如何反序列化或序列化二叉树是没有限制的,你...

honeymose
今天
6
0
java框架学习日志-7(静态代理和JDK代理)

静态代理 我们平时去餐厅吃饭,不是直接告诉厨师做什么菜的,而是先告诉服务员点什么菜,然后由服务员传到给厨师,相当于服务员是厨师的代理,我们通过代理让厨师炒菜,这就是代理模式。代理...

白话
今天
29
0
Flink Window

1.Flink窗口 Window Assigner分配器。 窗口可以是时间驱动的(Time Window,例如:每30秒钟),也可以是数据驱动的(Count Window,例如:每一百个元素)。 一种经典的窗口分类可以分成: 翻...

满小茂
今天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部