`
不平凡的人
  • 浏览: 35434 次
  • 性别: Icon_minigender_1
  • 来自: 嘉峪关
社区版块
存档分类
最新评论

ActiveMQ发送、接收消息

 
阅读更多

本文主要以一个简单的示例展示ActiveMQ收发消息:

 

一、ActiveMQ说明

二、代码示例

 

一、ActiveMQ说明

1、当前ActiveMQ的最新版本为: ActiveMQ 5.15.3 Release  ====》点击:官网下载ActiveMQ地址

 

2、下载好之后解压,然后启动ActiveMQ,启动时要根据系统的位数来选择



 

 

二、代码示例

 

导入依赖jar包

<dependency>
  <groupId>org.apache.activemq</groupId>
  <artifactId>activemq-all</artifactId>
  <version>5.15.3</version>
</dependency>

 

(1)生产者代码

package com.chinasoft.activemq;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
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;

/**
 * ActiveMQ消息的生产者 生产者发送消息到消息中间件,实现JMS规范接口的消息中间件称为JMS Provider
 * 
 * @author Freedom
 *
 */
public class Sender {

	public static void main(String[] args) throws JMSException {
		sender();
	}

	public static void sender() throws JMSException {

		// 1.建立ConnectionFactory
		ConnectionFactory f = new ActiveMQConnectionFactory(ActiveMQConnectionFactory.DEFAULT_USER,
				ActiveMQConnectionFactory.DEFAULT_PASSWORD, "tcp://localhost:61616");

		// 2.通过ConnectionFactory工厂建立Connection的连接,并调用start开启连接
		Connection c = f.createConnection();
		c.start();

		// 3.通过Connection对象创建session会话,用于接收消息,参数1:是否开启事务,参数2:设置签收方式
		Session session = c.createSession(false, Session.AUTO_ACKNOWLEDGE);// 自动签收

		// 4.通过session创建Destination对象,指的是一个客户端用来指定生产消息的目标和消费消息的来源对象
		// 在PTP的模式中Destination被称为Queue队列;在pub/sub模式下Destination被称为Topic主题
		Destination d = session.createQueue("firstMQ");

		// 5.通过session创建消息的发送者和接收者(生产者和消费者)
		MessageProducer p = session.createProducer(null);// 在生产者发送消息的同时指定Destination

		// 6.MessageProducer设置持久化特性和非持久化特性

		// 7.JMS规范的TextMessage形式数据通过Session来创建,并用MessageProducer发送消息,客户端receive方法进行数据的接受
		// 使用完成一定要关闭Connection连接
		TextMessage msg = null;
		for (int i = 0; i < 100; i++) {
			msg = session.createTextMessage();
			msg.setText("ActiveMQ作为消息中间件:" + i);
			System.out.println("生产者发送的消息==" + msg.getText());
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

			// 发送消息
			p.send(d, msg);
		}

		// 关闭连接
		c.close();

	}

}

 

注意:

①为了保证消息中间件中数据的可靠性,数据默认保存到kahadb中

 

 

②通过管控台可以看到生产者数据的变化

ActiveMQ内置jetty容器,访问管控台(http://localhost:8161/admin)



 

 

(2)消费者代码示例

package com.chinasoft.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.ActiveMQConnectionFactory;

public class Consumer {

	public static void main(String[] args) throws JMSException {
		receiver();
	}

	public static void receiver() throws JMSException {

		// 1.建立ConnectionFactory
		ConnectionFactory f = new ActiveMQConnectionFactory(ActiveMQConnectionFactory.DEFAULT_USER,
				ActiveMQConnectionFactory.DEFAULT_PASSWORD, "tcp://localhost:61616");

		// 2.通过ConnectionFactory工厂建立Connection的连接,并调用start开启连接
		Connection c = f.createConnection();
		c.start();

		// 3.通过Connection对象创建session会话,用于接收消息,参数1:是否开启事务,参数2:设置签收方式
		Session session = c.createSession(false, Session.AUTO_ACKNOWLEDGE);// 自动签收

		// 4.通过session创建Destination对象,指的是一个客户端用来指定生产消息的目标和消费消息的来源对象
		// 在PTP的模式中Destination被称为Queue队列;在pub/sub模式下Destination被称为Topic主题
		Destination d = session.createQueue("firstMQ");

		// 5.通过session创建消息的发送者和接收者(生产者和消费者)
		MessageConsumer consumer = session.createConsumer(d); // 消费者用于接受MQ的数据

		// 7.JMS规范的TextMessage形式数据通过Session来创建,并用MessageProducer发送消息,客户端receive方法进行数据的接受
		TextMessage msg = null;
		while (true) {
			// 阻塞等待接受MQ的数据
			msg = (TextMessage) consumer.receive();
			System.out.println("消费者接受消息===" + msg.getText());
		}
	}

}

 

控制台显示结果:



 

管控台显示结果:



 

 

 

  • 大小: 44 KB
  • 大小: 35.1 KB
  • 大小: 71.9 KB
  • 大小: 69 KB
  • 大小: 76.8 KB
分享到:
评论

相关推荐

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

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

    activeMQ发送消息返回消息

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

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

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

    springboot集成activemq实现消息接收demo

    配置完成后,我们创建一个`MessageReceiver`类来接收消息。这个类通常会实现`MessageListener`接口,这样可以监听消息队列中的新消息。下面是一个简单的`MessageReceiver`实现示例: ```java import org.spring...

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

    为了接收消息,你需要定义一个监听器接口,如`MessageListener`,并实现`onMessage()`方法。Spring Boot会自动处理消息的接收并调用这个方法: ```java @JmsListener(destination = "myQueue") public void ...

    activeMQ收发工具.rar

    6. **消息生产者与消费者**:掌握如何使用ActiveMQ收发工具创建消息生产者发送消息,以及创建消息消费者接收消息。 7. **持久化与非持久化消息**:了解消息的持久性配置,这决定了消息在服务器重启后是否仍然可用。...

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

    JMS提供了两个核心接口,`MessageProducer`和`MessageConsumer`,用于创建消息并将其发送到目的地(如队列或主题),以及从目的地接收消息。此外,`Session`接口用于管理事务和同步消息的发送与接收。 2. **连接...

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

    在Web应用中,前台接收消息通常涉及到AJAX轮询或者WebSocket技术。WebSocket提供双向通信,可以实现实时推送,但需要后端支持。对于不支持WebSocket的环境,可以使用Ajax轮询,定时向服务器请求新消息。 1. **Ajax...

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

    在本文中,我们将深入探讨如何使用`activemq-cpp`库在C++环境中发送和接收消息,并利用消息过滤器来实现特定的消息处理。`activemq-cpp`是Apache ActiveMQ的一个C++客户端,它提供了与ActiveMQ服务器进行交互的能力...

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

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

    ActiveMQ接受和发送工具.rar

    在压缩包中的"ActiveMQ接受和发送工具"很可能包含了一个图形界面或者命令行工具,使得用户可以更直观地发送测试消息到ActiveMQ服务器,查看消息队列的状态,以及接收消息。使用这些工具,开发者可以快速验证ActiveMQ...

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

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

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

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

    activemq消息发送和监听

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

    用C#实现的ActiveMQ发布/订阅消息传送

    它提供了发送和接收消息的线程安全环境。 4. `Producer`: 负责创建并发送消息到目的地(主题或队列)。使用`Session.CreateProducer()`方法创建。 5. `Consumer`: 用于接收消息。通过`Session.CreateConsumer()`方法...

    python 发送和接收ActiveMQ消息的实例

    在本文中,我们将深入探讨如何使用Python与ActiveMQ进行交互,特别关注如何发送和接收消息。ActiveMQ是一款开源的消息中间件,由Java开发,它支持多种协议,包括AMQP、MQTT、OpenWire和Stomp。在Python环境中,通常...

    使用WebSocket协议接收ActiveMQ消息

    至于压缩包文件"activemq_ws_接收消息",其中可能包含示例代码、配置文件或者文档,帮助用户更好地理解如何在ActiveMQ中配置WebSocket接收消息。解压并研究这些文件将有助于实际操作中的实施。 总之,使用WebSocket...

    activemq 接收文件流 C#

    4. 创建消费者:创建一个`IMessageConsumer`,它是接收消息的对象,通常会指定一个目的地(如队列或主题)。 5. 接收消息:调用消费者的消息接收方法,例如`Receive()`,这将阻塞直到有新消息到达。 6. 处理文件流:...

    spring使用activeMQ实现消息发送

    通过使用`JmsTemplate`类,我们可以方便地发送和接收消息。 1. **配置ActiveMQ**:在开始之前,我们需要在本地或者远程部署一个ActiveMQ服务器。配置文件通常为`activemq.xml`,在这里可以设置broker(消息代理)的...

Global site tag (gtag.js) - Google Analytics