目录

基本概念

代码及演示


基本概念

就是官方的这个模型:

p为生产者不经过交换机,直接把数据传给消息队列,c为consumer用于消费。

这种结构在本科生的时候,经常自己写,现在用RabbitMQ来试试

代码及演示

发送端点击运行:

消费者那边会接收到数据:

关键的源码如下:

Maven依赖:

<dependencies><dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.4.3</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.25</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.5</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency></dependencies>

生产者:

package rabbitmq.simple;import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import rabbitmq.util.ConnectionUtils;import java.io.IOException;
import java.util.concurrent.TimeoutException;public class Send {private static final String QUEUE_NAME = "test_simple_queue";public static void main(String[] args) throws IOException, TimeoutException {Connection connection = ConnectionUtils.getConnect();Channel channel = connection.createChannel();channel.queueDeclare(QUEUE_NAME, false, false, false, null);String msg = "Hello World";channel.basicPublish("", QUEUE_NAME, null, msg.getBytes());System.out.println("---send msg: " + msg);channel.close();connection.close();}
}

消费者:

package rabbitmq.simple;import com.rabbitmq.client.*;
import rabbitmq.util.ConnectionUtils;import java.io.IOException;
import java.util.concurrent.TimeoutException;public class Recv {private static final String QUEUE_NAME = "test_simple_queue";public static void main(String[] args) throws IOException, TimeoutException {Connection connection = ConnectionUtils.getConnect();Channel channel = connection.createChannel();channel.queueDeclare(QUEUE_NAME, false, false, false, null);    //声明,没有就会创建DefaultConsumer consumer = new DefaultConsumer(channel) {@Overridepublic void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {String msg = new String(body, "utf-8");System.out.println("recv: " + msg);}};//监听channel.basicConsume(QUEUE_NAME, true, consumer);}
}

这里有一点要注意的:

basicConsume里的第二个参数是true,的意思是给消息队列一个应答,说明,我已经拿出来了!他是一个ack

程序打包下载地址:

https://github.com/fengfanchen/Java/tree/master/SimpleRabbitMQ

Java笔记-使用RabbitMQ的Java接口生产数据并消费相关推荐

  1. C/C++笔记-使用RabbitMQ的C接口生产数据并消费

    目录 基本概念 代码与实例 基本概念 使用C语言接口完成官方的这个模型: 很有意思.感觉开源的东西真的好,不用自己去写C/C++服务端. p为生产者不经过交换机,直接把数据传给消息队列,c为consu ...

  2. Java笔记-使用RabbitMQ的Java接口实现topic(主题模式)

    目录 基本概念 代码与实例 基本概念 实现的就是官方给出的这个模型: Topic exchange:将路由和某模式匹配 其中 #:匹配一个或多个 *:匹配一个 比如下面要举得这个例子 交换机设置为to ...

  3. Java笔记-使用RabbitMQ的Java接口实现Routing(路由模式)

    目录 基本概念 代码与实例 基本概念 过程图如下: 主要是把交换机设置为直连的方式direct直连的方式然后把 数据 发送给交换机. 交换机再通过路由的Key值转发到队列上. 每一个客户端,都有一个队 ...

  4. Java笔记-使用RabbitMQ的Java接口实现Publish/Subscribe(订阅模式)

    目录 基本概念 代码与实例 基本概念 模型如上: 1. 一个生产者,多个消费者: 2. 每个消费者都有自己的队列: 3. 生产者没有直接把消息发送到队列,而是发送到交换机,通过交换机转发到队列: 4. ...

  5. Java笔记-使用RabbitMQ的Java接口实现Fair dispatch(公平分发)

    目录 基本概念 代码与实例 基本概念 当某些客户端处理比较强的时候,就多发数据让其处理,当某些客户端处理一般的时候,就少发数据让其处理. 主要是让消费者处理完后,回信息给RabbitMQ,然后Rabb ...

  6. Java笔记-使用RabbitMQ的Java接口实现round-robin(轮询分发)

    目录 基本概念 代码与实例 基本概念 简单队列的不足: 1. 耦合性高: 2. 如果生产者把生产队列该了,消费者也要同时改: Work Queues工作队列,模型如下: 代码与实例 程序运行截图如下: ...

  7. Java笔记整理五(Iterator接口,泛型,常见数据结构(栈,队列,数组,链表,红黑树,集合),jdk新特性,异常,多线程,Lambda表达式)

    Java笔记整理五 1.1Iterator接口 Collection接口与Map接口主要用于存储元素,而Iterator主要用于迭代访问(即遍历)Collection中的元素,因此Iterator对象 ...

  8. 9.1-全栈Java笔记: 容器泛型—认识Collection接口

    开发和学习中需要时刻和数据打交道,如果组织这些数据是我们编程中重要的内容. 我们一般通过"容器"来容纳和管理数据.   事实上,数组就是一种容器,可以在其中放置对象或基本类型数据. ...

  9. Java笔记(韩顺平Java基础12-14章)

    Java学习笔记(第12章 P444-P459)(第13章P460-P498)(第14章P499-P553) 第12章 异常-Exception 异常介绍 编译异常 异常处理 try-catch异常处 ...

最新文章

  1. 视音频数据处理入门:PCM音频采样数据处理
  2. linux windows 动态库导出查看 ld -r
  3. integer为null_比较两个Integer,为什么必须使用equals?不用==
  4. 路直路弯,面对挫折脚步不放慢
  5. 01 docker容器技术基础入门
  6. 开发者从应用程序商店难以赚到真金白银
  7. 网上在线字典辞典大全
  8. Qt 之 QQ系统表情(五)
  9. 漫谈Anchor-based和Anchor-Free
  10. VC++ 获取窗体句柄,并发送键盘消息(这种方法也可以打开某些应用程序)
  11. ccf-csp201912
  12. Navicat安装及简单使用
  13. ACC自适应巡航控制系统介绍
  14. 虚拟机 CentOS7 SecureCRT连接 CentOS连接不了网问题
  15. SuperMap iMobile for Android培训资料
  16. 计算机视觉之图像分割——水平集方法_ACWE2001
  17. 在更改计算机的设置路由器,怎么重新设置路由器密码? | 192路由网
  18. 大话西游手游服务器合服信息查询,大话西游手游合区查询 6月21日合区服务器列表...
  19. 移动安全工具-dex2jar
  20. 2008服务器注销设置,windows-server-2008 – 终端服务器在5分钟后注销用户

热门文章

  1. SolidWorks 更新系统注册记录失败
  2. 尚学堂科技_马士兵_设计模式
  3. 不同网段的远程控制脚本
  4. 解读程序员的武侠世界,顶级程序员是内外兼修的大侠,那么你呢?
  5. 11条建议让你成为优秀的JavaScript程序员
  6. C++中直接存取类私有成员[360度]
  7. 来前端君朋友圈,一起聊前端面试技巧
  8. 代码敲慢一点,学得会快一点
  9. 划重点:微信小程序1月9日正式上线
  10. mysql mongodb b树_为何Mongodb索引用B树,而Mysql用B+树?