`

RabbitMq简单实例

 
阅读更多

RabbitMq,先随便写了例子,假如想用在项目中,单例模式即可:

 

public class MQConstant {
	public static final String EXCHANGE_NAME = "liuExchange";
	public static final String QUEUE_NAME = "liuQueue";
	public static final String RoutingKey = "liuRoutingKey";
}

 

public class Produce {
	private static final Logger log = LoggerFactory.getLogger(Produce.class);
	public static void main(String[] args) throws IOException, TimeoutException {
		Produce p = new Produce();
		p.doSend();
	}

	private void doSend() throws IOException, TimeoutException {
		Connection connection = null;
		Channel channel = null;
		try {
			// 获取连接通道
			ConnectionFactory factory = new ConnectionFactory();
			factory.setHost("localhost");
			connection = factory.newConnection();
			channel = connection.createChannel();
			// 声明队列(非必要代码),注意这里的配置要和已建立的交换器一致,不然会报错。durable-持久化
//			channel.queueDeclare(MQConstant.QUEUE_NAME, true, false, false, null);
			String message = "Hello World!";
			channel.basicPublish(MQConstant.EXCHANGE_NAME, MQConstant.RoutingKey, null, message.getBytes("UTF-8"));
			System.out.println("[Produce] Sent:'" + message + "'");
		} catch (Exception e) {
			log.error("发送出错:", e);
		} finally {
			if (channel != null) {
				channel.close();
			}
			if (connection != null) {
				connection.close();
			}
		}
	}
}

 

 

public class Consumer {
	private static final Logger log = LoggerFactory.getLogger(Produce.class);

	public static void main(String[] args) throws IOException, TimeoutException {

		Connection connection = null;
		Channel channel = null;
		try {
			ConnectionFactory factory = new ConnectionFactory();
			factory.setHost("localhost");
			connection = factory.newConnection();
			channel = connection.createChannel();

			channel.queueDeclare(MQConstant.QUEUE_NAME, false, false, false, null);
			DefaultConsumer consumer = new DefaultConsumer(channel) {
				@Override
				public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties,
						byte[] body) throws IOException {
					String message = new String(body, "UTF-8");
					System.out.println("[Consumer] Received:'" + message + "'");
				}
			};
			// 自动回复队列应答,不然一个消息可以被重复消费
			String basicConsume = channel.basicConsume(MQConstant.QUEUE_NAME, true, consumer);
			System.out.println(basicConsume);
			Thread.sleep(1000L);
		} catch (Exception e) {
			log.error("发送出错:", e);
		} finally {
			if (channel != null) {
				channel.close();
			}
			if (connection != null) {
				connection.close();
			}
		}

	}
}

 

 

 

 

个人理解方面:

1、通讯前会建立一次连接,拿到connection对象,可重复使用,也可立即关闭。使用时connection.createChannel()即可,不需重复使用时,用完记得关闭Channel。

2、生产者短连接,Channel用完即关闭。

3、消费者长连接,Channel处于监听,生产者用完Channel即可关闭。

4、可在容器启动时,消费者注册到监听器。

  • 大小: 36.4 KB
分享到:
评论

相关推荐

    rabbitmq简单java实例

    在这个“rabbitmq简单java实例”中,我们将探讨如何在Java环境中集成并使用RabbitMQ。 首先,我们需要了解RabbitMQ的基本概念。在RabbitMQ中,生产者是发送消息的应用,消费者则是接收消息的应用。消息被发送到...

    android上RabbitMQ发送简单例子

    在本例中,我们将探讨如何在Android上设置和使用RabbitMQ,以及如何创建一个简单的测试Demo。 首先,我们关注的是"rabbitmq windows服务器安装 文档 - 副本.doc",这是一个关于在Windows环境下安装RabbitMQ的指南。...

    SpringBoot+redis+RabbitMq整合实例

    "sky-shopping"可能是这个实例中的一个具体应用场景,可能是一个电子商务平台。在这个平台上,Spring Boot负责整体应用的运行,Redis用于缓存用户会话、商品信息等高频访问数据,而RabbitMQ则用于处理订单创建、库存...

    rabbitmq.net各种实例

    在这个“rabbitmq.net各种实例”的压缩包中,我们可能会看到一系列使用C#或.NET实现的RabbitMQ示例代码,涵盖了不同的消息模式,如分发、点对点、应答以及广播。 1. **分发(Fanout)模式**:在分发模式下,...

    【C#】RabbitMQ实例

    这个简单的例子展示了C#中使用RabbitMQ的基本流程。在实际应用中,你可能需要考虑更多的特性,如错误处理、消息确认、死信队列、持久化、工作队列、发布/订阅模式等。同时,RabbitMQ还提供了多种高级功能,例如路由...

    【学习资源】rabbitmq实例代码

    1. `rabbitmqTest`:这个可能是一个简单的RabbitMQ客户端测试应用,它可能包含创建连接、发布消息、接收消息和断开连接等基本操作。在学习这个例子时,你可以了解到如何配置RabbitMQ的连接参数,创建生产者和消费者...

    rabbitmq(java实例)

    在这个Java实例中,我们将探讨如何在Eclipse开发环境中使用Maven来集成并实现RabbitMQ的功能。 首先,我们需要在Eclipse中创建一个新的Maven项目。确保你的Eclipse已经安装了Maven插件,并配置了Maven的本地仓库...

    RabbitMq与Spring整合实例

    在本实例中,我们将探讨如何将RabbitMQ与Spring进行整合。首先,我们需要在项目中引入RabbitMQ的相关依赖,这通常通过Maven来完成。在`pom.xml`文件中,添加RabbitMQ的客户端库以及Spring的Amqp依赖,如: ```xml ...

    SpringBoot集成Rabbitmq简单案例

    这个简单的例子展示了如何使用Spring Boot和RabbitMQ进行基础的消息传递。 在实际应用中,我们可以根据业务需求调整消息的路由策略,如使用不同的交换机类型(Direct、Fanout、Topic等),以及更复杂的绑定规则。...

    RabbitMQ简单队列实例及原理解析

    RabbitMQ 简单队列实例及原理解析 RabbitMQ 是一个消息代理系统,它接受并转发消息。在这个系统中,队列起着非常重要的角色,队列可以存储消息,并将其传递给消费者。生产者将消息发送给队列,而消费者则从队列中...

    rabbitmq demo实例

    这个“rabbitmq demo实例”很可能包含了一些基础到进阶的RabbitMQ使用示例,帮助我们理解如何在实际项目中应用RabbitMQ。 1. **RabbitMQ基本概念** - **消息**:在RabbitMQ中,消息是传递的基本单元,它包含了要...

    rabbitMQ Maven实例

    这个简单的例子展示了如何使用Maven和RabbitMQ的Java客户端创建一个发布/订阅模型。在实际项目中,你可能需要处理更多复杂场景,如错误处理、多个消费者、消息确认机制等。此外,还可以利用RabbitMQ的其他特性,如...

    rabbitmq简单示例

    本示例旨在通过一个简单的demo,向你展示如何使用RabbitMQ以及其四种Exchange Types的基本用法,同时也会提及一些API的使用技巧。以下将详细阐述这些知识点: 1. **RabbitMQ基础**:RabbitMQ是一个开源的消息代理,...

    RabbitMQ运行例子

    在本文中,我们将探讨如何运行一个简单的RabbitMQ实例,以及如何使用提供的代码进行实践。 首先,我们需要安装RabbitMQ。这通常涉及在操作系统上下载并安装RabbitMQ服务器。对于Unix/Linux系统,可以通过包管理器如...

    rabbitmq+java简单例子

    ### rabbitmq+java简单例子知识点解析 #### 一、RabbitMQ简介 RabbitMQ 是一个开源的消息代理软件,它支持多种消息协议,包括 AMQP(Advanced Message Queuing Protocol)。RabbitMQ 可以帮助开发者在分布式系统...

    Java使用RabbitMq的一个简单demo

    这个例子展示了RabbitMQ的基本用法,实际应用中可以根据需求设置更复杂的路由规则、交换机类型和队列属性。 总之,RabbitMQ作为消息中间件,能有效地解耦应用程序,提高系统的可扩展性和容错性。Java开发者可以通过...

    rabbitmq.net 各种实例

    下面我们将深入探讨rabbitmq.net的各种实例及其相关知识点。 一、安装rabbitmq.net 首先,我们需要通过NuGet包管理器安装`RabbitMQ.Client`库。在Visual Studio中,右键点击项目,选择“管理NuGet程序包”,然后...

    RabbitMQ实战指南-rabbitmq-action.zip

    3. **管理插件**: `rabbitmq-management`插件提供了一个Web界面,用于监控、管理RabbitMQ实例,包括查看节点状态、创建用户、管理虚拟主机等。 **三、RabbitMQ核心概念** 1. **生产者**: 生产者是发送消息到...

    Django+celery+rabbitmq配置文档

    - **创建Celery实例**: 在项目的主目录下创建一个名为`celery.py`的文件,定义Celery应用实例: ```python from __future__ import absolute_import from celery import Celery app = Celery('pro_name', ...

Global site tag (gtag.js) - Google Analytics