Simple MQ

在此之前,先安装rabbitMQ,我是在docker上直接部署的,docker-compose.yml如下:

version: '3'
services:rabbitmq:image: rabbitmq:management-alpinecontainer_name: rabbitmqenvironment:- RABBITMQ_DEFAULT_USER=你的用户名    # 创建rabbitMQ用户名和密码- RABBITMQ_DEFAULT_PASS=你的密码restart: alwaysports:- "15672:15672"- "5672:5672"logging:driver: "json-file"options:max-size: "200k"max-file: "10"

建议大家,以后的部署全部在docker上完成,这是非常方便的。部署完成后直接在浏览器中输入:
你的ip:15672 就能访问rabbitMQ客户端了。比如我的 192.168.116.128:15672,就能看到下面的内容:

输入你刚才设置的账号和密码,即可进入客户端。


rabbitMQ使用阶段

最简单的消息队列,官网传送门:

包含一个消费者,一个生产者,一个MQ

接下来引入需要的依赖:

<dependencies><!-- https://mvnrepository.com/artifact/com.rabbitmq/amqp-client --><dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.7.3</version></dependency>
</dependencies>

包含一个消费者,一个生产者,代码如下:

建立连接(连接工具类):

public class RabbitConnection {public static Connection getConnection() throws IOException, TimeoutException {ConnectionFactory factory = new ConnectionFactory();// addressfactory.setHost("192.168.119.129");  // 这是我的linux主机地址,docker下安装MQfactory.setUsername("king");factory.setPassword("123456");factory.setVirtualHost("/vhosts");   // 节点return factory.newConnection();}
}

生产者:

public class Send {private static final String QUEUE_NAME = "simple_mq";  //消息队列名称public static void main(String[] args) throws IOException, TimeoutException {Connection connection = RabbitConnection.getConnection();Channel channel = connection.createChannel();channel.queueDeclare(QUEUE_NAME, false, false, false, null);String message = "hello simple_mq";  // 发送的消息channel.basicPublish("", QUEUE_NAME, null, message.getBytes());System.out.println(" [x] Sent.......... '" + message + "'");}
}

消费者:

public class ReceiV {private static final String QUEUE_NAME = "simple_mq";public static void main(String[] args) throws IOException, TimeoutException {Connection connection = RabbitConnection.getConnection();Channel channel = connection.createChannel();channel.queueDeclare(QUEUE_NAME, false, false, false, null);System.out.println(" [*] Waiting for messages. To exit press CTRL+C");DeliverCallback deliverCallback = (consumerTag, delivery) -> {String message = new String(delivery.getBody(), "UTF-8");System.out.println(" [x] Received '" + message + "'");};channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> { });}
}

如果这里报错 lambda ~~~~level 5之类的错误,加上下面的内容到pom中:

 <build><plugins><plugin><artifactId>maven-compiler-plugin</artifactId><version>2.3.2</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins></build>

这里我们启动两个Application,发现,只要是启动一次send,消费者后台就会接收到message,进行消费。

RabbitMQ——simple MQ相关推荐

  1. RabbitMQ (一) MQ介绍以Linux下RabbitMq环境安装

    1,MQ 相关介绍 1.1 什么是MQ MQ(Message Queue)消息队列,是基础数据结构中"先进先出"的一种数据结构.一般用来解决应用解耦,异步消息,流量削锋等问题,实现 ...

  2. RabbitMQ(mq) 如何处理高并发、负载均衡、消息幂等性、丢失、消息顺序错乱问题?

    目录 介绍: 1.连接器(connection): 2.信道.通道(channel): 3.交换机(exchange): 4.队列(queue): 以下通过两个例子,让我们先来对rabbitmq 有个 ...

  3. 初识MQ和RabbitMQ

    MQ,中文是消息队列(MessageQueue),字面来看就是存放消息的队列. 几种常见MQ的对比: RabbitMQ ActiveMQ RocketMQ Kafka 公司/社区 Rabbit Apa ...

  4. 各个MQ消息队列介绍以及区别比较(RabbitMq ActiveMQ、ZeroMQ、Kafka)

    首先,MQ其实就是消息队列,队列我们可以理解为管道,以管道的方式做消息传递. 在本篇博客中,我们先来简单学习一下几种MQ,之后对他们进行对比. ActiveMQ.RabbitMQ.kafka.Rock ...

  5. RabbitMQ简单队列模式

    简单队列模式 红色:队列 P:消息的生产者 C:消息的消费者 生产者,将消息发送到队列 消费者,从队列中获取消息 配置依赖 导入RabbitMQ客户端依赖 <dependency>< ...

  6. 大数据互联网架构阶段 QuartZ定时任务+RabbitMQ消息队列

    QuartZ定时任务+RabbitMQ消息队列 一 .QuartZ定时任务解决订单系统遗留问题 情景分析: 在电商项目中 , 订单生成后 , 数据库商品数量-1 , 但是用户迟迟不进行支付操作 , 这 ...

  7. RabbitMQ(三) HelloWorld 单生产者单消费者示例实现

    一.创建Maven工程,引入RabbitMQ依赖. pom.xml 如下: <?xml version="1.0" encoding="UTF-8"?&g ...

  8. 消息队列RabbitMQ的使用

    最近在学习spring cloud微服务,当学习到spring cloud bus的时候,涉及到了消息队列,需要学习RabbitMQ. 一.消息队列 1.1介绍消息队列 消息队列,即MQ,Messag ...

  9. 消息队列RabbitMQ入门与PHP实战

    消息队列介绍以及消息队列应用场景 RabbitMQ 说明 MQ(Message Queue) 即消息队列,是应用间的通信方式,消息发送后可立即返回,由消息系统来确保消息的可靠传递."消息队列 ...

最新文章

  1. Go语言的DES加密(CBC模式, ECB模式) ---- 与java加密互通(转)
  2. Spring Boot JdbcTemplate 入门
  3. leetcode-有效的括号(三种语言不同思路)
  4. tomcat下只有.class文件 没有java文件_解决tomcat发布工程后,WEB-INF/classes下文件不编译的问题...
  5. 【LeetCode - 42. 接雨水】
  6. ctrl c 失效了_[安卓+PC双端]超C女仆无馬中字
  7. 抢先试用ReSharper UnitRun™ 1.0
  8. 《统计学习方法》读书笔记——感知机(原理+代码实现)
  9. Java log4j使用
  10. 2011-2-14 | Android Handler
  11. python实现寻找最长回文子序列
  12. 「开源资讯」MyExcel 3.3.0.GA 发布,终于支持图片导入啦
  13. IBM TSM官方最全资料
  14. python xlwt模块下载_python 的xlwt模块
  15. ProcessOn 在线作图,真香指南
  16. 如何将bmp转化为jpg,bmp转jpg方法
  17. 码农到架构师视频学习笔记
  18. 英语知识系列:英文与中文句子构成成分的对应关系
  19. npm list vue显示empty解决办法
  20. Recoil 的使用

热门文章

  1. AxonFramework,存储库
  2. LINUX的一些简单命令 时间修改
  3. DTS开发记录(5)-- 挑战增量导出
  4. 爱培科963方案GPS升级ROM过程以及SDK开发
  5. 确保帐户安全 谈MySQL数据库安全解决方案
  6. solr6.6+jetty+centos+mysql
  7. Retrofit+Rxjava+OkHttp
  8. Idea tomcat get 乱码
  9. saltstack(三)state
  10. java web service索引