官网英文版学习——RabbitMQ学习笔记(三)Hello World!
参考http://www.rabbitmq.com/tutorials/tutorial-one-java.html,我们直接上代码,由于我们的RabbitMQ服务是安装在虚拟机上的,具体参考上一节。所以我们的代码中间和官网会不同,但是本博主的代码均跑过,能够正常运行。
一、首先我们需要一个java的工程进去写代码,这里为了方便,我们之间通过https://start.spring.io/初始化网站创建一个springboot的maven项目。具体操作不在赘述。
生成的项目导入到eclipse。
二、在pom.xml文件中加入rabbitmq java 客户端的依赖。
<!-- https://mvnrepository.com/artifact/com.rabbitmq/amqp-client -->
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.0.0</version>
</dependency>
三、创建相关的类,生产者(发送者)代码如下:
package com.rabbitmq.HelloWorld; import java.io.IOException;
import java.util.concurrent.TimeoutException; import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory; public class ProductHelloWorld { private final static String QUEUE_NAME ="hello"; public static void main(String[] args) throws IOException, TimeoutException {
// TODO Auto-generated method stub
// 创建连接工厂
ConnectionFactory factory = new ConnectionFactory();
// 设置服务器主机,安装的rabbitmq-server的服务器主机
factory.setHost("192.168.10.185");
// 默认端口是5672,尽管本人登陆RabbitMQ的端口是15672
factory.setPort(5672);
factory.setUsername("admin");
factory.setPassword("123456");
// 创建连接
Connection connection = factory.newConnection();
// 创建信道,这是大多数完成任务的API所在的位置。
Channel channel = connection.createChannel();
// 声明队列,参数(队列名,)声明队列是幂等的——它只会在它不存在的情况下被创建。
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
// 定义消息内容
String message = "Hello World!";
// 发布消息
channel.basicPublish("", QUEUE_NAME, null,message.getBytes());
System.out.println("[product] sent:'"+message+"'");
// 关闭信道
channel.close();
// 关闭连接
connection.close(); } }
消费者(接收者)代码如下:
package com.rabbitmq.HelloWorld; import java.io.IOException;
import java.util.concurrent.TimeoutException; import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Consumer;
import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope;
import com.rabbitmq.client.AMQP.BasicProperties; public class ConsumerHelloWorld { private final static String QUEUE_NAME = "hello"; public static void main(String[] args) throws IOException, TimeoutException {
// TODO Auto-generated method stub
// 创建连接工厂
ConnectionFactory factory = new ConnectionFactory();
// 设置连接rabbitmq的主机地址
factory.setHost("192.168.10.185");
// 默认端口是5672,尽管本人登陆RabbitMQ的端口是15672
factory.setPort(5672);
factory.setUsername("admin");
factory.setPassword("123456");
// 创建连接
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");
// 以对象的形式提供回调,该对象将缓冲消息,直到我们准备好使用它们为止。这就是DefaultConsumer子类所做的事情。
Consumer consumer = new DefaultConsumer(channel){
@Override
public void handleDelivery(String consumerTag, Envelope envelope,
BasicProperties properties, byte[] body) throws IOException {
// TODO Auto-generated method stub
String message = new String(body,"utf-8");
System.out.println("[消费者]接收:'"+message+"'");
}
};
// 消费
channel.basicConsume(QUEUE_NAME, true, consumer); } }
整个springboot代码结构如下,我们只是运用了两个类而已。
四、运行测试
运行结果如下:
生产者
消费者
五、查看RabbitMQ管理器
我们在对应RabbitMQ管理器上看一下,有变化发生:
Hello World 完成。
官网英文版学习——RabbitMQ学习笔记(三)Hello World!的更多相关文章
- 官网英文版学习——RabbitMQ学习笔记(十)RabbitMQ集群
在第二节我们进行了RabbitMQ的安装,现在我们就RabbitMQ进行集群的搭建进行学习,参考官网地址是:http://www.rabbitmq.com/clustering.html 首先我们来看 ...
- 官网英文版学习——RabbitMQ学习笔记(一)认识RabbitMQ
鉴于目前中文的RabbitMQ教程很缺,本博主虽然买了一本rabbitMQ的书,遗憾的是该书的代码用的不是java语言,看起来也有些不爽,且网友们不同人学习所写不同,本博主看的有些地方不太理想,为此本 ...
- Unity shader 官网文档全方位学习(一)
转载:https://my.oschina.net/u/138823/blog/181131 摘要: 这篇文章主要介绍Surface Shaders基础及Examples详尽解析 What?? Sha ...
- 利用JQ实现的,高仿 彩虹岛官网导航栏(学习HTML过程中的小记录)
利用JQ实现的,高仿 彩虹岛官网导航栏(学习HTML过程中的小记录) 作者:王可利(Star·星星) 总结: 今天学习的jQ类库的使用,代码重复的比较多需要完善.严格区分大小写,在 $(" ...
- 官网英文版学习——RabbitMQ学习笔记(二)RabbitMQ安装
一.安装RabbitMQ的依赖Erlang 要进行RabbitMQ学习,首先需要进行RabbitMQ服务的安装,安装我们可以根据官网指导进行http://www.rabbitmq.com/downlo ...
- 官网英文版学习——RabbitMQ学习笔记(八)Remote procedure call (RPC)
在第四篇学习笔记中,我们学习了如何使用工作队列在多个工作者之间分配耗时的任务. 但是,如果我们需要在远程计算机上运行一个函数并等待结果呢?这是另一回事.这种模式通常称为远程过程调用或RPC. ...
- 官网英文版学习——RabbitMQ学习笔记(七)Topic
在上一篇中使用直接交换器改进了我们的系统,使得它能够有选择的进行接收消息,但它仍然有局限性——它不能基于多个条件进行路由.本节我们就进行能够基于多个条件进行路由的topics exchange学习. ...
- 官网英文版学习——RabbitMQ学习笔记(五)Publish/Subscribe
发布/订阅模式:把一个消息发送给多个消费者. 前几篇文章的思想是,我们好像看到了生产者将消息直接发送给queue,然后消费者也从queue中进行消费.其实并非如此,RabbitMQ中的消息传递模型的核 ...
- 官网英文版学习——RabbitMQ学习笔记(四)Work queues
工作队列:把每个任务只发送给一个工作者. 上一篇我们是从一个指定的队列发送接收消息,在本文中,我们将创建一个工作队列,用于在多个工作者之间分配耗时的任务. 工作队列(即任务队列)背后的主要思想是避免立 ...
随机推荐
- XML规范化(DTD)
无意义的XML 之前说过因为xml没有预设的标签,所以说你怎麽写他一般都不会报错. 所以需要对xml的书写格式进行一些限制,这就引入了DTD 下面的这个xml你可以给book添加各种属性还不会报错,但 ...
- Java生鲜电商平台-小程序或者APP拼团功能设计与架构实战
Java生鲜电商平台-小程序或者APP拼团功能设计与架构实战 说明:Java生鲜电商平台拼团是拉新引流的利器,将拼团运用到极致的就是拼多多,前期通过选取性价比高.实用性强的商品进行拼团,在社交圈(主要 ...
- 自定义组装json对象
组装json对象 public string strTree(DataTable dt, string type, string state) { string strjosn = "&qu ...
- 你知道HTTP协议的ETag是干什么的吗?
前言 在HTTP1.1规范中,新增了一个HTTP头信息:ETag.对于普通开发者来说,可能平时真的不会接触到该HTTP头.平时接触不到或者说用得少,不代表这个请求头不重要.ETag使用得当,是可以减少 ...
- Linux学习计划中遇到的问题记录
随时更新 Linux安装到网络联通遇到的问题及解决办法 1.命令区分大小写 2..网络连通 ping本地 地址遇到问题 解决办法: https://blog.csdn.net/qq_42074075/ ...
- python学习第二课——while循环
#while循环基础语句 while 1==1: print('OK') #死循环 #如何阻止死循环 count=0 while count<10: print('第'+(str)(count) ...
- 小笔记----about JC
JC project JAVA,Mysql. 页面用velocity template engine render的html/css Apache Velocity template engine ...
- LeetCode刷题--基础知识篇--KMP算法
KMP算法 关于字符串匹配的算法,最知名的莫过于KMP算法了,尽管我们日常搬砖几乎不可能去亲手实现一个KMP算法,但作为一种算法学习的锻炼也是很好的,所以记录一下. KMP算法是根据三位作者(D.E. ...
- 【Game学习随笔01】挑战任务01
今天是2020年2月6日,时间过得好快,以至于我在写到时间会下意识写成2019年…… 看来全国肺炎情况进一步升温了,以至于我家所在的小区进行了命令封锁通知,所以出行不再像以前那么自由了,不管怎样,给战 ...
- IOS 3种内省方法
IOS提供了3种内省方法 isKindOfClass 检查当前实例是否为某类及其子类 UIView *b = [UIView new]; //... id a = b; if ([a isMember ...