参考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!的更多相关文章

  1. 官网英文版学习——RabbitMQ学习笔记(十)RabbitMQ集群

    在第二节我们进行了RabbitMQ的安装,现在我们就RabbitMQ进行集群的搭建进行学习,参考官网地址是:http://www.rabbitmq.com/clustering.html 首先我们来看 ...

  2. 官网英文版学习——RabbitMQ学习笔记(一)认识RabbitMQ

    鉴于目前中文的RabbitMQ教程很缺,本博主虽然买了一本rabbitMQ的书,遗憾的是该书的代码用的不是java语言,看起来也有些不爽,且网友们不同人学习所写不同,本博主看的有些地方不太理想,为此本 ...

  3. Unity shader 官网文档全方位学习(一)

    转载:https://my.oschina.net/u/138823/blog/181131 摘要: 这篇文章主要介绍Surface Shaders基础及Examples详尽解析 What?? Sha ...

  4. 利用JQ实现的,高仿 彩虹岛官网导航栏(学习HTML过程中的小记录)

    利用JQ实现的,高仿 彩虹岛官网导航栏(学习HTML过程中的小记录)   作者:王可利(Star·星星) 总结: 今天学习的jQ类库的使用,代码重复的比较多需要完善.严格区分大小写,在 $(" ...

  5. 官网英文版学习——RabbitMQ学习笔记(二)RabbitMQ安装

    一.安装RabbitMQ的依赖Erlang 要进行RabbitMQ学习,首先需要进行RabbitMQ服务的安装,安装我们可以根据官网指导进行http://www.rabbitmq.com/downlo ...

  6. 官网英文版学习——RabbitMQ学习笔记(八)Remote procedure call (RPC)

    在第四篇学习笔记中,我们学习了如何使用工作队列在多个工作者之间分配耗时的任务.   但是,如果我们需要在远程计算机上运行一个函数并等待结果呢?这是另一回事.这种模式通常称为远程过程调用或RPC.   ...

  7. 官网英文版学习——RabbitMQ学习笔记(七)Topic

    在上一篇中使用直接交换器改进了我们的系统,使得它能够有选择的进行接收消息,但它仍然有局限性——它不能基于多个条件进行路由.本节我们就进行能够基于多个条件进行路由的topics exchange学习. ...

  8. 官网英文版学习——RabbitMQ学习笔记(五)Publish/Subscribe

    发布/订阅模式:把一个消息发送给多个消费者. 前几篇文章的思想是,我们好像看到了生产者将消息直接发送给queue,然后消费者也从queue中进行消费.其实并非如此,RabbitMQ中的消息传递模型的核 ...

  9. 官网英文版学习——RabbitMQ学习笔记(四)Work queues

    工作队列:把每个任务只发送给一个工作者. 上一篇我们是从一个指定的队列发送接收消息,在本文中,我们将创建一个工作队列,用于在多个工作者之间分配耗时的任务. 工作队列(即任务队列)背后的主要思想是避免立 ...

随机推荐

  1. Entity Framework Migrations 数据迁移

    在使用Entity Framework 过程中,经常会遇到需要变更model 的状况,此时可以使用Migrations ,将每次变更记录以便后续更换机器或是运行在生产环境,持久层可保持一致. 在Pac ...

  2. 130、Java面向对象之static关键字二(在没有实例化对象产生时直接操作static属性)

    01.代码如下: package TIANPAN; class Book { // 描述的是同一个出版社的信息 private String title; // 普通属性 private double ...

  3. vue项目真机测试

    1.在项目中重启命令行运行ipconfig(如果是ios系统运行ifconfig)获取到项目在本机运行的ip地址 2.在项目的package.json中修改允许访问ip地址(--host 0.0.0. ...

  4. ImageMagick 将PDF转图片命令

    将 pdf 转一张图片 PS C:\Users\Microestc\desktop> magick convert -density -quality .pdf -append .jpeg ro ...

  5. 对C/C++指针问题的彻底理解(复习1)

    理解第一篇 上完大学不是我吹(仅仅说我认识的本学校本专业)估计很明白指针的人绝对不超过百分之50,学校low不low另说(因为问他们讲得断断续续的自己也说不明白,只知道那样可以用) 学链表树形结构.. ...

  6. Django线上部署代码修改失效问题

    记一次django项目的线上部署维护问题,django+nginx 关于nginx反向代理服务器的介绍这里有一篇博客介绍的比较好:nginx的相关介绍 以及当一次客户端请求发出后,uwsig以及uWS ...

  7. 带你了解后渗透工具Koadic

    前言: 在朋友的博客上看到推荐的一款工具Koadic,我接触了以后发现很不错这款工具的强大之处我觉得就是拿到shell后的各种模块功能,我就自己写出来发给大家看看吧. 首先把项目克隆到本地: 项目地址 ...

  8. eclipse不能启动,An internal error occurred during: "reload maven project".

    An internal error occurred during: "reload maven project". 这个错误是因为项目已经关闭,导致 导致此问题的原因是Sprin ...

  9. mabatis--使用mapper代理开发dao

    1.编写mapper.xml映射文件: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE m ...

  10. bootstrap修改数据刷新页面跳转到当前页的问题

    修改按钮的页面的方法里添加如下代码 1      var pn = $("#datatable").bootstrapTable('getOptions').pageNumber; ...