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、可在容器启动时,消费者注册到监听器。
相关推荐
在这个“rabbitmq简单java实例”中,我们将探讨如何在Java环境中集成并使用RabbitMQ。 首先,我们需要了解RabbitMQ的基本概念。在RabbitMQ中,生产者是发送消息的应用,消费者则是接收消息的应用。消息被发送到...
在本例中,我们将探讨如何在Android上设置和使用RabbitMQ,以及如何创建一个简单的测试Demo。 首先,我们关注的是"rabbitmq windows服务器安装 文档 - 副本.doc",这是一个关于在Windows环境下安装RabbitMQ的指南。...
"sky-shopping"可能是这个实例中的一个具体应用场景,可能是一个电子商务平台。在这个平台上,Spring Boot负责整体应用的运行,Redis用于缓存用户会话、商品信息等高频访问数据,而RabbitMQ则用于处理订单创建、库存...
在这个“rabbitmq.net各种实例”的压缩包中,我们可能会看到一系列使用C#或.NET实现的RabbitMQ示例代码,涵盖了不同的消息模式,如分发、点对点、应答以及广播。 1. **分发(Fanout)模式**:在分发模式下,...
这个简单的例子展示了C#中使用RabbitMQ的基本流程。在实际应用中,你可能需要考虑更多的特性,如错误处理、消息确认、死信队列、持久化、工作队列、发布/订阅模式等。同时,RabbitMQ还提供了多种高级功能,例如路由...
1. `rabbitmqTest`:这个可能是一个简单的RabbitMQ客户端测试应用,它可能包含创建连接、发布消息、接收消息和断开连接等基本操作。在学习这个例子时,你可以了解到如何配置RabbitMQ的连接参数,创建生产者和消费者...
在这个Java实例中,我们将探讨如何在Eclipse开发环境中使用Maven来集成并实现RabbitMQ的功能。 首先,我们需要在Eclipse中创建一个新的Maven项目。确保你的Eclipse已经安装了Maven插件,并配置了Maven的本地仓库...
在本实例中,我们将探讨如何将RabbitMQ与Spring进行整合。首先,我们需要在项目中引入RabbitMQ的相关依赖,这通常通过Maven来完成。在`pom.xml`文件中,添加RabbitMQ的客户端库以及Spring的Amqp依赖,如: ```xml ...
这个简单的例子展示了如何使用Spring Boot和RabbitMQ进行基础的消息传递。 在实际应用中,我们可以根据业务需求调整消息的路由策略,如使用不同的交换机类型(Direct、Fanout、Topic等),以及更复杂的绑定规则。...
RabbitMQ 简单队列实例及原理解析 RabbitMQ 是一个消息代理系统,它接受并转发消息。在这个系统中,队列起着非常重要的角色,队列可以存储消息,并将其传递给消费者。生产者将消息发送给队列,而消费者则从队列中...
这个“rabbitmq demo实例”很可能包含了一些基础到进阶的RabbitMQ使用示例,帮助我们理解如何在实际项目中应用RabbitMQ。 1. **RabbitMQ基本概念** - **消息**:在RabbitMQ中,消息是传递的基本单元,它包含了要...
这个简单的例子展示了如何使用Maven和RabbitMQ的Java客户端创建一个发布/订阅模型。在实际项目中,你可能需要处理更多复杂场景,如错误处理、多个消费者、消息确认机制等。此外,还可以利用RabbitMQ的其他特性,如...
本示例旨在通过一个简单的demo,向你展示如何使用RabbitMQ以及其四种Exchange Types的基本用法,同时也会提及一些API的使用技巧。以下将详细阐述这些知识点: 1. **RabbitMQ基础**:RabbitMQ是一个开源的消息代理,...
在本文中,我们将探讨如何运行一个简单的RabbitMQ实例,以及如何使用提供的代码进行实践。 首先,我们需要安装RabbitMQ。这通常涉及在操作系统上下载并安装RabbitMQ服务器。对于Unix/Linux系统,可以通过包管理器如...
### rabbitmq+java简单例子知识点解析 #### 一、RabbitMQ简介 RabbitMQ 是一个开源的消息代理软件,它支持多种消息协议,包括 AMQP(Advanced Message Queuing Protocol)。RabbitMQ 可以帮助开发者在分布式系统...
这个例子展示了RabbitMQ的基本用法,实际应用中可以根据需求设置更复杂的路由规则、交换机类型和队列属性。 总之,RabbitMQ作为消息中间件,能有效地解耦应用程序,提高系统的可扩展性和容错性。Java开发者可以通过...
下面我们将深入探讨rabbitmq.net的各种实例及其相关知识点。 一、安装rabbitmq.net 首先,我们需要通过NuGet包管理器安装`RabbitMQ.Client`库。在Visual Studio中,右键点击项目,选择“管理NuGet程序包”,然后...
3. **管理插件**: `rabbitmq-management`插件提供了一个Web界面,用于监控、管理RabbitMQ实例,包括查看节点状态、创建用户、管理虚拟主机等。 **三、RabbitMQ核心概念** 1. **生产者**: 生产者是发送消息到...
- **创建Celery实例**: 在项目的主目录下创建一个名为`celery.py`的文件,定义Celery应用实例: ```python from __future__ import absolute_import from celery import Celery app = Celery('pro_name', ...