`

activeMQ 消息发送与接收(一)

阅读更多
一、默认已建项目、导包
(包在activemq解压目录/lib 及/lib/optional/目录下),
如下图(有几个包暂时不需要,不过后续代码中需使用):



二、点对点模式
2.1、发送消息
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;

/**
 * 点对点模式--消息发送、
 * 单连接、消息不持久化、无事务、消息自动确认
 * @author showlike
 * @4:46:25 PM @Jan 6, 2014
 */
public class Sender {
	
	public static void main(String args[]){
		//连接工厂,JMS用它创建连接
		ConnectionFactory connFactory; 
		//Provider 的连接
		Connection conn = null;
		//一个发送或接收消息的线程
		Session session ; 
		//消息的目的地;消息发送给谁
		Destination destination;
		MessageProducer producer;	//消息发送者
		//构造ConnectionFactory 实例对象,此处采用ActiveMQ的实现JAR
		connFactory = new ActiveMQConnectionFactory("admin","showlike","tcp://0.0.0.0:61616");
		try{
			//从连接工厂创建连接
			conn = connFactory.createConnection();
			conn.start();	//启动
			session = conn.createSession(Boolean.FALSE, 
					Session.AUTO_ACKNOWLEDGE);
			//创建
			destination = session.createQueue("FirstQueue");
			//得到消息生成者【发送者】
			producer = session.createProducer(destination);
			//设置不持久化,此处学习,实际根据项目决定
			producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
			// 构造消息,此处写死,项目就是参数,或者方法获取  
            sendMessage(session, producer);  
//            session.commit();
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			if(conn!=null){
				try {
					conn.close();
				} catch (JMSException e) {
					e.printStackTrace();
				}
			}
		}
	}
	
    public static void sendMessage(Session session, MessageProducer producer)  
    													throws Exception {
    	long startTime = System.currentTimeMillis();
    	for (int i = 1; i <= 1000000; i++) {  
    		TextMessage message = session.createTextMessage(
    				"ActiveMq 发送的消息" + i);  
    		// 发送消息到目的地方  
    		System.out.println("发送消息:" + "ActiveMq 发送的消息" + i);  
    		producer.send(message);
//    		Thread.sleep(100);
    	}	
    	
    	long endTime = System.currentTimeMillis();
    	long diff = endTime - startTime;
        long diffSeconds = diff / 1000;

        System.out.print("sender use time: "+diffSeconds + " seconds.");
	}  
}


2.2、接收消息
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.ActiveMQConnectionFactory;

/**
 * 点对点模式--消息接收
 * 单连接、消息不持久化、无事务、消息自动确认接收
 * @author showlike
 * @4:42:25 PM @Jan 6, 2014
 */
public class Receiver {
	
	public static void main(String[] args) {
		ConnectionFactory connFactory;
		Connection conn = null;
		Session session = null;
		Destination destination;
		MessageConsumer consumer;
		
		try{
			connFactory = new ActiveMQConnectionFactory("admin","showlike","tcp://0.0.0.0:61616");
			
			conn = connFactory.createConnection();
			conn.start();
			session = conn.createSession(Boolean.FALSE, //不开启事务
					Session.AUTO_ACKNOWLEDGE);			//消息自动确认
			destination = session.createQueue("FirstQueue");
			consumer = session.createConsumer(destination);
			
			long startTime = System.currentTimeMillis();
			int i = 1;
			do{
				TextMessage message = (TextMessage)consumer.receive(100000);
				if(message != null){
					System.out.println(i+" , 收到消息为: "+message.getText());
					i++;
				}else{
					System.out.println(i+" , 收到消息为null..... ");
				}
			}while(i<=1000000);
			
			long endTime = System.currentTimeMillis();
	    	long diff = endTime - startTime;
	        long diffSeconds = diff / 1000;

	        System.out.print("receiver use time: "+diffSeconds + " seconds.");
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			if(session!=null){
				try {
					session.close();
				} catch (JMSException e) {
					e.printStackTrace();
				}
			}
			if(conn!=null){
				try {
					conn.close();
				} catch (JMSException e) {
					e.printStackTrace();
				}
			}
		}
	}
}
分享到:
评论

相关推荐

    SpringBoot+ActiveMq+MQTT实现消息的发送和接收

    在本文中,我们将深入探讨如何使用SpringBoot、ActiveMQ和MQTT来实现消息的发送与接收。这是一个典型的分布式系统中的消息通信场景,其中SpringBoot作为应用程序框架,ActiveMQ作为消息中间件,而MQTT(Message ...

    activemq 通过ajax发送接收消息简单例子

    在这个简单的例子中,我们将探讨如何利用Ajax与ActiveMQ交互,发送和接收消息。首先,你需要在服务器端设置一个ActiveMQ实例,可以通过下载并安装ActiveMQ来完成。安装完成后,启动ActiveMQ服务,这通常会开启一个...

    springboot集成activemq实现消息接收demo

    在IT行业中,Spring Boot是一个非常流行的微服务框架,它简化了Spring应用的开发过程。而ActiveMQ是Apache出品的一款...在实际生产环境中,ActiveMQ还可以与其他中间件、微服务架构结合,提供更强大的消息处理能力。

    ActiveMQ消息发送接收封装实现及定时测试.

    实现了ActiveMQ的初步封装,比较适合新手入门学习,简单明了

    activemq-cpp发送接收消息,消息过滤器

    首先,`activemq-cpp`库为开发者提供了一个直观的API,用于创建生产者(Producer)和消费者(Consumer)来发送和接收消息。发送消息的基本步骤包括: 1. **初始化连接**:创建一个`ConnectionFactory`实例,然后...

    activeMQ收发工具.rar

    5. **连接工厂与会话**:了解JMS中的连接工厂和会话对象,它们是与消息服务器建立连接并创建消息通道的基础。 6. **消息生产者与消费者**:掌握如何使用ActiveMQ收发工具创建消息生产者发送消息,以及创建消息消费...

    Springboot整合ActiveMQ,实现消息的发送接收功能源码

    在本文中,我们将深入探讨如何使用SpringBoot框架与Apache ActiveMQ集成,以便实现实时的消息发送和接收功能。首先,让我们简要了解一下SpringBoot和ActiveMQ。 **SpringBoot简介** SpringBoot是Spring框架的一个...

    Spring+ActiveMQ消息队列+前台接收消息

    通过以上步骤,你可以成功地将Spring与ActiveMQ整合,实现后台消息的生产和消费,并在前台接收到这些消息。这种设计模式常用于大型分布式系统,如订单处理、日志收集、任务调度等场景,以提高系统的可靠性和响应速度...

    activeMQ发送消息返回消息

    在ActiveMQ中,发送和接收消息是一个核心功能,它允许应用程序之间进行异步通信,提高系统的可扩展性和解耦性。 在ActiveMQ中发送消息,通常涉及以下步骤: 1. **创建ConnectionFactory**:ConnectionFactory是...

    ActiveMQ学习笔记之九--发送消息到队列中

    此外,`Session`接口用于管理事务和同步消息的发送与接收。 2. **连接ActiveMQ**: 使用`ActiveMQConnectionFactory`创建一个连接工厂,然后使用它创建到ActiveMQ服务器的连接。连接可以通过`Connection`接口的`...

    使用WebSocket协议接收ActiveMQ消息

    ActiveMQ,作为一款流行的开源消息中间件,也支持WebSocket协议,使得客户端可以通过WebSocket接口来接收和发送消息。 ActiveMQ是Apache软件基金会开发的消息队列产品,它遵循开放标准,如JMS(Java Message ...

    Android基于MQTT协议利用ActiveMQ发送消息给Android端接收

    在这个项目中,“Android基于MQTT协议利用ActiveMQ发送消息给Android端接收”指的是Android客户端应用通过MQTT协议与ActiveMQ服务器交互,实现消息的发送和接收。这是一个典型的长连接通信方式,与传统的HTTP请求...

    activemq消息发送和监听

    项目使用springboot2.0.4搭建,一个父项目包含两个子项目:发送服务;监听服务;消息服务使用ActiveMQ 5.14.3,在docker中运行。 项目中有两种协议消息:activemq和mqtt。

    ActiveMQ接受和发送工具.rar

    这个"ActiveMQ接受和发送工具.rar"压缩包包含了用于与ActiveMQ交互的实用工具,方便用户进行消息的接收和发送操作。 在使用ActiveMQ时,了解以下几个关键知识点是至关重要的: 1. **Java Message Service (JMS)**...

    ActiveMQ发送和接收protobuf协议消息的实例(精心整理,亲测可用)

    在本文中,我们将深入探讨如何使用ActiveMQ发送和接收基于protobuf(Protocol Buffers)协议的消息,同时也会介绍如何进行ActiveMQ的简化封装和配置自动重连机制。 首先,protobuf是Google开发的一种数据序列化协议...

    spring使用activeMQ实现消息发送

    本文将深入探讨如何在Spring环境中使用ActiveMQ来实现消息的发送与接收,以提高系统的可扩展性和解耦性。 首先,我们需要了解Spring对ActiveMQ的支持。Spring提供了`spring-jms`模块,它包含了一组丰富的API和配置...

    SpringBoot整合ActiveMQ(消息中间件)实现邮件发送功能

    4. **发送消息**:通过`JmsTemplate`或者`JMSTemplate`的`convertAndSend`方法可以向ActiveMQ发送消息。 **二、邮件发送功能** 邮件发送功能通常涉及以下步骤: 1. **配置邮件服务器**:在配置文件中设置SMTP...

    ActiveMq+SpringMVC实现邮件异步发送

    ActiveMQ作为一个开源的消息中间件,被广泛用于实现消息队列和发布/订阅模式,它允许应用将非实时任务如邮件发送等操作放到后台处理,从而提升系统的响应速度。在本项目中,ActiveMQ与SpringMVC框架结合,实现了邮件...

    ActiveMQ消息过期时间设置和自动清除解决方案

    ### ActiveMQ 消息过期时间设置与自动清除解决方案 #### 概述 在消息队列的场景下,为了防止消息长时间滞留在队列中占用资源或者为了满足业务上对消息时效性的需求,通常需要对消息设定过期时间。本文档详细介绍了...

Global site tag (gtag.js) - Google Analytics