RabbitMQ第一篇——初识RabbitMQ,简单的消息发送和接收
来源:互联网 发布:淘宝充值平台官网登录 编辑:程序博客网 时间:2024/06/05 09:09
简单的说,RabbitMQ有点类似于生产者消费者问题。有N个发送消息客户端、N个接收消息客户端和一个消息队列。值得一提的是这N个消息发送者可以将信息发送到同一个消息队列,而这个队列也可以被N消息接收者接收。Note:生产者消费者不一定要在同一个机器。
下面将详细介绍Java操作RabbitMQ,我们以“Hello Word“ 为例。
我们会创建两个客户端,一个是生产者,向RabbitMQ传输信息。另一个是消费者,从RabbitMQ拿到信息。
首先先建立与mq的链接,然后通过链接建立一个通道(Channel)通过通道向MQ发送消息
ConnectionFactory factory = new ConnectionFactory(); factory.setHost("localhost"); Connection connection = factory.newConnection(); Channel channel = connection.createChannel();
接下来就是在Channel上申明一个队列,因为在MQ中所有消息的接收和发送都是通过queue来完成的。
申明完队列以后通过basicPublish()方法发送消息,一个有四个参数,现在暂且只介绍两个,剩下的会后续介绍,现在先设置为空。注意发送的消息必须是二进制数组。
channel.queueDeclare(QUEUE_NAME, false, false, false, null); String message = "Hello World!"; channel.basicPublish("", QUEUE_NAME, null, message.getBytes()); System.out.println(" [x] Sent '" + message + "'");
最后当然不要忘了将链接关闭。
channel.close(); connection.close();
发送完了,自然要接收,下面就是接收的代码。记住发送和接收的队列名字必须一致,才能接收的消息。
public class Recv { private final static String QUEUE_NAME = "hello"; public static void main(String[] argv) throws java.io.IOException, java.lang.InterruptedException { ConnectionFactory factory = new ConnectionFactory(); factory.setHost("localhost"); Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); channel.queueDeclare(QUEUE_NAME, false, false, false, null); System.out.println(" [*] Waiting for messages. To exit press CTRL+C");
<span class="n" style="font-family: Arial, Helvetica, sans-serif;"> </span><span class="n" style="font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; color: rgb(0, 128, 128);">Consumer</span><span style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(238, 238, 238);"> </span><span class="n" style="font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; color: rgb(0, 128, 128);">consumer</span><span style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(238, 238, 238);"> </span><span class="o" style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; font-weight: bold;">=</span><span style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(238, 238, 238);"> </span><span class="k" style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; font-weight: bold;">new</span><span style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(238, 238, 238);"> </span><span class="n" style="font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; color: rgb(0, 128, 128);">DefaultConsumer</span><span class="o" style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; font-weight: bold;">(</span><span class="n" style="font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; color: rgb(0, 128, 128);">channel</span><span class="o" style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; font-weight: bold;">)</span><span style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(238, 238, 238);"> </span><span class="o" style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; font-weight: bold;">{</span>
<span class="nd" style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif;"><span style="background-color: rgb(238, 238, 238);"> </span>@Override</span>
<span class="kd" style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif;"> </span><span class="kd" style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; font-weight: bold;">public</span><span style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(238, 238, 238);"> </span><span class="kt" style="font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; color: rgb(68, 85, 136); font-weight: bold;">void</span><span style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(238, 238, 238);"> </span><span class="nf" style="font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; color: rgb(153, 0, 0); font-weight: bold;">handleDelivery</span><span class="o" style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; font-weight: bold;">(</span><span class="n" style="font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; color: rgb(0, 128, 128);">String</span><span style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(238, 238, 238);"> </span><span class="n" style="font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; color: rgb(0, 128, 128);">consumerTag</span><span class="o" style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; font-weight: bold;">,</span><span style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(238, 238, 238);"> </span><span class="n" style="font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; color: rgb(0, 128, 128);">Envelope</span><span style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(238, 238, 238);"> </span><span class="n" style="font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; color: rgb(0, 128, 128);">envelope</span><span class="o" style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; font-weight: bold;">,</span><span style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(238, 238, 238);"> </span><span class="n" style="font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; color: rgb(0, 128, 128);">AMQP</span><span class="o" style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; font-weight: bold;">.</span><span class="na" style="font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; color: rgb(0, 128, 128);">BasicProperties</span><span style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(238, 238, 238);"> </span><span class="n" style="font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; color: rgb(0, 128, 128);">properties</span><span class="o" style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; font-weight: bold;">,</span><span style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(238, 238, 238);"> </span><span class="kt" style="font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; color: rgb(68, 85, 136); font-weight: bold;">byte</span><span class="o" style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; font-weight: bold;">[]</span><span style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(238, 238, 238);"> </span><span class="n" style="font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; color: rgb(0, 128, 128);">body</span><span class="o" style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; font-weight: bold;">) </span><span class="kd" style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; font-weight: bold;">throws</span><span style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(238, 238, 238);"> </span><span class="n" style="font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; color: rgb(0, 128, 128);">IOException</span><span style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(238, 238, 238);"> </span><span class="o" style="color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; font-family: Arial, Helvetica, sans-serif; font-weight: bold;">{</span>
<pre style="padding: 5px 15px; border-radius: 5px; color: rgb(85, 85, 85); font-size: 13px; line-height: 18px; background-color: rgb(238, 238, 238);"> <span class="n" style="color: rgb(0, 128, 128);">String</span> <span class="n" style="color: rgb(0, 128, 128);">message</span> <span class="o" style="font-weight: bold;">=</span> <span class="k" style="font-weight: bold;">new</span> <span class="n" style="color: rgb(0, 128, 128);">String</span><span class="o" style="font-weight: bold;">(</span><span class="n" style="color: rgb(0, 128, 128);">body</span><span class="o" style="font-weight: bold;">,</span> <span class="s" style="color: rgb(221, 17, 68);">"UTF-8"</span><span class="o" style="font-weight: bold;">);</span> <span class="n" style="color: rgb(0, 128, 128);">System</span><span class="o" style="font-weight: bold;">.</span><span class="na" style="color: rgb(0, 128, 128);">out</span><span class="o" style="font-weight: bold;">.</span><span class="na" style="color: rgb(0, 128, 128);">println</span><span class="o" style="font-weight: bold;">(</span><span class="s" style="color: rgb(221, 17, 68);">" [x] Received '"</span> <span class="o" style="font-weight: bold;">+</span> <span class="n" style="color: rgb(0, 128, 128);">message</span> <span class="o" style="font-weight: bold;">+</span> <span class="s" style="color: rgb(221, 17, 68);">"'"</span><span class="o" style="font-weight: bold;">);</span> <span class="o" style="font-weight: bold;">}</span> <span class="o" style="font-weight: bold;">};</span>
channel.basicConsume(QUEUE_NAME, true, consumer);}
}
0 0
- RabbitMQ第一篇——初识RabbitMQ,简单的消息发送和接收
- 使用RabbitMQ简单发送接收消息
- openstack——RabbitMQ 的oslo.messaging 和 Cinder 中 MessageQueue 消息的发送和接收
- RabbitMQ之最简单的消息的发送与接收
- RabbitMQ+Spring Quartz 实现消息的定时发送和接收
- Rabbitmq消息发送接收Demo
- java调用rabbitmq消息队列发送和接收消息实例
- SpringBoot的RabbitMQ消息队列: 一、消息发送接收第一印象
- SpringBoot的RabbitMQ消息队列: 一、消息发送接收第一印象
- python、rabbitmq、pika、消息发送和接收实例
- RabbitMQ第一篇:RabbitMQ的安装和配置
- rabbitMQ第一篇:rabbitMQ的安装和配置
- rabbitMQ第一篇:rabbitMQ的安装和配置
- rabbitMQ第一篇:rabbitMQ的安装和配置
- rabbitMQ学习笔记(二) 简单的发送与接收消息 HelloWorld
- rabbitMQ学习笔记(二) 简单的发送与接收消息 HelloWorld
- rabbitMQ学习笔记(二) 简单的发送与接收消息 HelloWorld
- .Net下RabbitMQ的使用(2) -- 发送接收消息
- 北京数字认证股份有限公司-数字证书认证管理解决方案
- RSA算法理解
- 素数线性筛选
- 解决apache无法启动:undefined symbol: apr_ldap_ssl_init
- 归并排序
- RabbitMQ第一篇——初识RabbitMQ,简单的消息发送和接收
- Unity3d平台脚本预定义编译条件 Platform Dependent Compilation
- hibernate现有项目说明
- Java-发送邮件(附件、图片)---(三)类-Properties、Session、MimeMessage
- HUST-1010
- java中十进制转二进制转换函数
- 构建流数据平台(stream data platform)实践指南-(part 1)
- 移动混合应用Hybrid App开发实战
- jQuery $符号冲突