`

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实例

    SpringBoot+redis+RabbitMq整合实例

    Spring boot+redis+rabbitMq实例整合的简单例子,可用来参考学习

    android上RabbitMQ发送简单例子

    1.含有如何配置RabbitMQ服务器文档 2.含有一个简单的,测试成功的通过RabbitMQ进行网络发送的Demo。 本文档对想要用RabbitMQ作为网络发送手段的初学者帮助比较大

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

    主要介绍了RabbitMQ简单队列实例及原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    rabbitmq+java简单例子

    rabbitmq安装完成后,配置管理站,编写一个java生产消息和消费消息简单例子。

    rabbitmq简单示例

    RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件,这是一个简单的demo示例,讲解了4种Exchange Types及简单的api使用

    RabbitMQ学习简单demo项目源码

    RabbitMQ学习过程中,写的一个简单完整的demo项目源码,各种模式的MQ都有一个简单的例子,喜欢实践学习的人看看

    springboot集成rabbitmq的简单使用

    springboot集成rabbitmq的简单使用,介绍了springboot集成rabbitmq的使用,利用的交换机、队列、路由key来实现的例子

    springboot_rabbitmq.rar

    基于springboot与rabbitmq的简单的例子。配套https://blog.csdn.net/huaya1127/article/details/105806030使用。

    flask-rabbitmq:与RabbitMQ pika库结合的简单Python Flask

    烧瓶兔 flask-rabbitmq是一个框架,简化了python操作Rabbitmq的框架,...简单的例子 首先在app/__init__.py实例化RabbitMQ和Queue对象,然后导入demo模块: from example . app import app from flask_rabbitmq import

    c# rabbitmq 简单收发消息的示例代码

    主要介绍了c# rabbitmq 简单收发消息的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    rabbitmq之helloworld和worker的例子

    实现了基础的rabbitmq的连接,生产者和消费者。 有助于初学者学习如何使用java来操作rabbitmq

    基于docker-compose一键离线部署rabbitmq3.9.16镜像集群工具

    1、支持rabbitmq单实例部署 2、支持单机rabbitmq镜像集群部署 3、支持多机rabbitmq分布式镜像集群部署 4、支持数据目录、日志目录、插件目录、配置文件持久化 5、支持数据目录、日志目录、端口、账号、密码、内存阀...

    RabbitMQ_Project.zip

    rabbitmq的入门实例,有简单队列,轮询分发模式,公平分发模式,交换机,路由模式,topic模式

    spring boot集成rabbitmq的实例教程

    主要给大家介绍了关于spring boot集成rabbitmq的相关资料,springboot集成RabbitMQ非常简单,文中通过示例代码介绍的非常详细,需要的朋友们可以参考借鉴,下面随着小编来一起学习学习吧。

    基于docker-compose一键离线部署haproxy+rabbitmq3.9.16高可用镜像集群工具

    1、支持rabbitmq单实例部署 2、支持单机haproxy+rabbitmq高可用镜像集群部署 3、支持多机haproxy+rabbitmq高可用分布式镜像集群部署 4、支持数据目录、日志目录、插件目录、配置文件持久化 5、支持数据目录、日志...

    配置中心springcloudconfig实例:内含erlang,RabbitMQ和练习的demo

    供做配置中心练习使用,里面有简单的介绍,我们有配置maven私服和gitlab私库,记得修改,先启动spring-cloud-demo它是server端,spring-cloud-client和spring-cloud-demo1都是client端,命名不是那么规范,谅解,...

    mbus:基于RabbitMQ简单实现验证码识别平台,训练网络模型智能识别图形验证码

    基于机器学习Caffe框架,配合RabbitMQ消息队列技术实现图像验证码识别平台 验证码识别服务竞争消费模式,支持集群部署以支撑大流量服务; 经过观察,目前市场上的小平台基本都是这种模式,再优化也是拆分服务,做限...

    ec2-rabbitmq:EC2 实例上的基本 RabbitMQ 设置说明

    以下是在单个EC2 实例上设置 RabbitMQ 服务器的快速说明。 这意味着如果实例宕机,RabbitMQ 服务器将不会响应。 为了防止这种情况,您可以设置集群节点,这里不介绍。 要求 一个新的 EC2 实例 安全组对以下传入端口...

    RabbitMQ资料整理

    Broker:简单来说就是消息队列服务器实体。 Exchange:消息交换机。它接受消息和路由信息,然后将消息发送给消息队列。对于每个虚 拟主机内部,交换器有独一无二的名字。应用程序在其权限范围之内可以自由的 创建、...

Global site tag (gtag.js) - Google Analytics