RabbitMQ学习第一记:用java连接RabbitMQ
2018-09-09 16:46
351 查看
1、什么是RabbitMQ
MQ(Message Queue):消息队列,是服务端设计的一个可以存储大量消息的队列,并提供客户端操作队列的方法:生产队列(向队列中添加数据)、消费队列(从队列中取数据)。RabbitMQ就是基于消息队列的一个典型应用。RabbitMQ除了普通的生产消费功能,还有一些高级功能:公平分发 ,轮询分发,路由模式,通配符模式,发布订阅,队列持久化。
2、java实现RabbitMQ的连接
2.1、RabbitMQ客户端jar包
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>4.0.2</version>
</dependency>
2.2、java连接RabbitMQ工具类
复制代码
public class ConnectionUtil
{
private static Logger logger = Logger.getLogger(ConnectionUtil.class);
}
复制代码
2.3、简单的生产者-消费者模式
下图取自于官方网站(RabbitMQ)的生产消费模式的工作图
P:消息的生产者
C:消息的消费者
红色:队列
生产者将消息发送到队列,消费者从队列中获取消息。
2.4、生产者(Send)
复制代码
public class Send
{
//队列名称
private static final String QUEUE_NAME = "test_simple_queue";
}
运行结果:
[send]:This is simple queue
复制代码
2.5、消费者(Receive)
复制代码
public class Receive
{
//队列名称
private static final String QUEUE_NAME = "test_simple_queue";
}
运行结果:
[Receive]:This is simple queue
复制代码
总结:
简单的生产者-消费者模式实现了生产者向队列里生产数据,消费者启动后可以一直监听队列,不断的从队列里取出数据。
MQ(Message Queue):消息队列,是服务端设计的一个可以存储大量消息的队列,并提供客户端操作队列的方法:生产队列(向队列中添加数据)、消费队列(从队列中取数据)。RabbitMQ就是基于消息队列的一个典型应用。RabbitMQ除了普通的生产消费功能,还有一些高级功能:公平分发 ,轮询分发,路由模式,通配符模式,发布订阅,队列持久化。
2、java实现RabbitMQ的连接
2.1、RabbitMQ客户端jar包
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>4.0.2</version>
</dependency>
2.2、java连接RabbitMQ工具类
复制代码
public class ConnectionUtil
{
private static Logger logger = Logger.getLogger(ConnectionUtil.class);
public static Connection getConnection() { try { Connection connection = null; //定义一个连接工厂 ConnectionFactory factory = new ConnectionFactory(); //设置服务端地址(域名地址/ip) factory.setHost("127.0.0.1"); //设置服务器端口号 factory.setPort(5672); //设置虚拟主机(相当于数据库中的库) factory.setVirtualHost("/"); //设置用户名 factory.setUsername("admin"); //设置密码 factory.setPassword("888888"); connection = factory.newConnection(); return connection; } catch (Exception e) { return null; } }
}
复制代码
2.3、简单的生产者-消费者模式
下图取自于官方网站(RabbitMQ)的生产消费模式的工作图
P:消息的生产者
C:消息的消费者
红色:队列
生产者将消息发送到队列,消费者从队列中获取消息。
2.4、生产者(Send)
复制代码
public class Send
{
//队列名称
private static final String QUEUE_NAME = "test_simple_queue";
public static void main(String[] args) { try { //获取连接 Connection connection = ConnectionUtil.getConnection(); //从连接中获取一个通道 Channel channel = connection.createChannel(); //声明队列 channel.queueDeclare(QUEUE_NAME, false, false, false, null); String message = "This is simple queue"; //发送消息 channel.basicPublish("", QUEUE_NAME, null, message.getBytes("utf-8")); System.out.println("[send]:" + message); channel.close(); connection.close(); } catch (IOException | TimeoutException e) { e.printStackTrace(); } }
}
运行结果:
[send]:This is simple queue
复制代码
2.5、消费者(Receive)
复制代码
public class Receive
{
//队列名称
private static final String QUEUE_NAME = "test_simple_queue";
public static void main(String[] args) { try { //获取连接 Connection connection = ConnectionUtil.getConnection(); //从连接中获取一个通道 Channel channel = connection.createChannel(); //声明队列 channel.queueDeclare(QUEUE_NAME, false, false, false, null); //定义消费者 DefaultConsumer consumer = new DefaultConsumer(channel) { //当消息到达时执行回调方法 @Override public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties, byte[] body) throws IOException { String message = new String(body, "utf-8"); 5b4 System.out.println("[Receive]:" + message); } }; //监听队列 channel.basicConsume(QUEUE_NAME, true, consumer); } catch (IOException | ShutdownSignalException | ConsumerCancelledException e) { e.printStackTrace(); } }
}
运行结果:
[Receive]:This is simple queue
复制代码
总结:
简单的生产者-消费者模式实现了生产者向队列里生产数据,消费者启动后可以一直监听队列,不断的从队列里取出数据。
相关文章推荐
- RabbitMQ学习之Java客户端连接测试(二)
- RabbitMQ学习之Java客户端连接测试(二)
- RabbitMQ学习之Java客户端带权限连接测试
- 跟学韩老师学习java-servlet篇之二http长短连接、下载文件、no-chache
- Java 学习笔记01:使用JDBC连接MYSQL数据库
- Java学习笔记——JDBC连接技术
- java学习:weblogic下JNDI及JDBC连接测试(weblogic环境)
- 用java连接数据库的学习记录
- Java学习笔记——JDBC之与数据库MySQL的连接以及增删改查等操作
- Java学习——连接数据库
- java 从零开始,学习笔记之基础入门<数据库连接配置>(二十八)
- Effective Java 学习笔记(第51条:当心字符串的连接性能)
- 30天轻松学习javaweb_通过telnet连接http服务器
- Java学习之---简单的JDBC连接Oracle
- 黑马韩前成java学习第二天java中加号连接符详解
- 数据连接部分通过测试源代码-----java学习笔记之4
- Oracle的学习三:java连接Oracle、事务、内置函数、日期函数、转换函数、系统函数
- JAVA学习:JDBC连接DB2数据库(1)
- Riak学习(2):java连接Riak服务,使用Protocol Buffers连接
- ODBC数据库连接------java学习笔记之3