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实例
Spring boot+redis+rabbitMq实例整合的简单例子,可用来参考学习
1.含有如何配置RabbitMQ服务器文档 2.含有一个简单的,测试成功的通过RabbitMQ进行网络发送的Demo。 本文档对想要用RabbitMQ作为网络发送手段的初学者帮助比较大
主要介绍了RabbitMQ简单队列实例及原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
rabbitmq安装完成后,配置管理站,编写一个java生产消息和消费消息简单例子。
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件,这是一个简单的demo示例,讲解了4种Exchange Types及简单的api使用
RabbitMQ学习过程中,写的一个简单完整的demo项目源码,各种模式的MQ都有一个简单的例子,喜欢实践学习的人看看
springboot集成rabbitmq的简单使用,介绍了springboot集成rabbitmq的使用,利用的交换机、队列、路由key来实现的例子
基于springboot与rabbitmq的简单的例子。配套https://blog.csdn.net/huaya1127/article/details/105806030使用。
烧瓶兔 flask-rabbitmq是一个框架,简化了python操作Rabbitmq的框架,...简单的例子 首先在app/__init__.py实例化RabbitMQ和Queue对象,然后导入demo模块: from example . app import app from flask_rabbitmq import
主要介绍了c# rabbitmq 简单收发消息的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
实现了基础的rabbitmq的连接,生产者和消费者。 有助于初学者学习如何使用java来操作rabbitmq
1、支持rabbitmq单实例部署 2、支持单机rabbitmq镜像集群部署 3、支持多机rabbitmq分布式镜像集群部署 4、支持数据目录、日志目录、插件目录、配置文件持久化 5、支持数据目录、日志目录、端口、账号、密码、内存阀...
rabbitmq的入门实例,有简单队列,轮询分发模式,公平分发模式,交换机,路由模式,topic模式
主要给大家介绍了关于spring boot集成rabbitmq的相关资料,springboot集成RabbitMQ非常简单,文中通过示例代码介绍的非常详细,需要的朋友们可以参考借鉴,下面随着小编来一起学习学习吧。
1、支持rabbitmq单实例部署 2、支持单机haproxy+rabbitmq高可用镜像集群部署 3、支持多机haproxy+rabbitmq高可用分布式镜像集群部署 4、支持数据目录、日志目录、插件目录、配置文件持久化 5、支持数据目录、日志...
供做配置中心练习使用,里面有简单的介绍,我们有配置maven私服和gitlab私库,记得修改,先启动spring-cloud-demo它是server端,spring-cloud-client和spring-cloud-demo1都是client端,命名不是那么规范,谅解,...
基于机器学习Caffe框架,配合RabbitMQ消息队列技术实现图像验证码识别平台 验证码识别服务竞争消费模式,支持集群部署以支撑大流量服务; 经过观察,目前市场上的小平台基本都是这种模式,再优化也是拆分服务,做限...
以下是在单个EC2 实例上设置 RabbitMQ 服务器的快速说明。 这意味着如果实例宕机,RabbitMQ 服务器将不会响应。 为了防止这种情况,您可以设置集群节点,这里不介绍。 要求 一个新的 EC2 实例 安全组对以下传入端口...
Broker:简单来说就是消息队列服务器实体。 Exchange:消息交换机。它接受消息和路由信息,然后将消息发送给消息队列。对于每个虚 拟主机内部,交换器有独一无二的名字。应用程序在其权限范围之内可以自由的 创建、...