simple queue(简单队列)
Virtual host-虚拟主机
- 虚拟主机,用于进行逻辑隔离,是最上层的路由,类似于redis的16个db,是一种逻辑上的隔离
- 一个virtualhost里面可以有若干个Exchange和Queue
- 同一个virtualhost里面不能有相同名称的Exchange和Queue
1.simple queue模型
2.创建一个连接工具类
- package com.dwz.rabbitmq.util;
- import java.io.IOException;
- import java.util.concurrent.TimeoutException;
- import com.rabbitmq.client.Connection;
- import com.rabbitmq.client.ConnectionFactory;
- public class ConnectionUtils {
- /**
- * 获取MQ的连接
- * @return
- * @throws TimeoutException
- * @throws IOException
- */
- public static Connection getConnection() throws IOException, TimeoutException {
- //定义一个连接工厂
- ConnectionFactory factory = new ConnectionFactory();
- //设置服务地址
- factory.setHost("127.0.0.1");
- //设置AMQP端口号
- factory.setPort(5672);
- //vhost
- factory.setVirtualHost("/vhost_dwz");
- factory.setUsername("root_dwz");
- factory.setPassword("123456");
- //设置网络断开时的自动重连
- factory.setAutomaticRecoveryEnabled(true);
- //每3秒重连一次
- factory.setNetworkRecoveryInterval(3000);
- return factory.newConnection();
- }
- }
3.创建生产者
- package com.dwz.rabbitmq.simple;
- import java.io.IOException;
- import java.util.concurrent.TimeoutException;
- import com.dwz.rabbitmq.util.ConnectionUtils;
- import com.rabbitmq.client.Channel;
- import com.rabbitmq.client.Connection;
- public class Send {
- private static final String QUEUE_NAME = "test_simple_queue";
- public static void main(String[] args) throws IOException, TimeoutException {
- //获取一个连接
- Connection connection = ConnectionUtils.getConnection();
- //从连接中获取一个通道
- Channel channel = connection.createChannel();
- //创建队列声明
- channel.queueDeclare(QUEUE_NAME, false, false, false, null);
- String msg = "hello rabbitmq simple message!";
- //发布消息
- channel.basicPublish("", QUEUE_NAME, null, msg.getBytes());
- System.out.println("send msg--:" + msg);
- //关闭信道
- channel.close();
//关闭连接- connection.close();
- }
- }
注:此时未指定exchange,所以该队列绑定的是rabbitmq提供的默认的exchange
即:
此时的exchange类型是direct(直连)方式
4.创建消费者
- package com.dwz.rabbitmq.simple;
- import java.io.IOException;
- import java.util.concurrent.TimeoutException;
- import com.dwz.rabbitmq.util.ConnectionUtils;
- import com.rabbitmq.client.AMQP.BasicProperties;
- import com.rabbitmq.client.Channel;
- import com.rabbitmq.client.Connection;
- import com.rabbitmq.client.DefaultConsumer;
- import com.rabbitmq.client.Envelope;
- public class Receive {
- private static final String QUEUE_NAME = "test_simple_queue";
- public static void main(String[] args) throws IOException, TimeoutException {
- //获取一个连接
- Connection connection = ConnectionUtils.getConnection();
- //从连接中获取一个通道
- Channel channel = connection.createChannel();
- //队列声明
- channel.queueDeclare(QUEUE_NAME, false, false, false, null);
- //定义消费者
- DefaultConsumer consumer = new DefaultConsumer(channel) {
- //自动接收消息
- @Override
- public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties, byte[] body)
- throws IOException {
- String msg = new String(body, "utf-8");
- System.out.println("consumer receive--:" + msg);
- }
- };
- //监听队列
- channel.basicConsume(QUEUE_NAME, consumer);
- }
- }
5.运行代码
success!
simple queue(简单队列)的更多相关文章
- HTTPSQS(HTTP Simple Queue Service)消息队列
HTTPSQS(HTTP Simple Queue Service)是一款基于 HTTP GET/POST 协议的轻量级开源简单消息队列服务,使用 Tokyo Cabinet 的 B+Tree Key ...
- Amazon SQS(Simple Queue Service) 简单介绍
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/hongchangfirst/article/details/25877059 SQS即Simple ...
- 使用Amazon Simple Queue Service(SQS) 实现简单的消息服务
一 引言 亚马逊Amazon作为云计算的领跑者推出了很多云服务,最近因为项目的原因,需要用到SQS服务,因此简要地写下这篇随笔,一来方便以后查阅,二来方便共享一些简单的操作. SQS即可以理解为一个 ...
- 转:基于HTTP协议的轻量级开源简单队列服务:HTTPSQS
[文章作者:张宴 本文版本:v1.7.1 最后修改:2011.11.04 转载请注明原文链接:http://blog.zyan.cc/httpsqs/] HTTPSQS(HTTP Simple Que ...
- 基于HTTP协议的轻量级开源简单队列服务:HTTPSQS[转]
HTTPSQS(HTTP Simple Queue Service)是一款基于 HTTP GET/POST 协议的轻量级开源简单消息队列服务,使用 Tokyo Cabinet 的 B+Tree Key ...
- python-Day3-set 集合-counter计数器-默认字典(defaultdict) -可命名元组(namedtuple)-有序字典(orderedDict)-双向队列(deque)--Queue单项队列--深浅拷贝---函数参数
上节内容回顾:C语言为什么比起他语言块,因为C 会把代码变异成机器码Pyhton 的 .pyc文件是什么python 把.py文件编译成的.pyc文件是Python的字节码, 字符串本质是 字符数组, ...
- STL - queue(队列)
Queue简介 queue是队列容器,是一种"先进先出"的容器. queue是简单地装饰deque容器而成为另外的一种容器. #include <queue> queu ...
- python---RabbitMQ(1)简单队列使用,消息依次分发(一对一),消息持久化处理
MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们.消息传递指的是程序之间 ...
- RabbitMq 之简单队列
简单队列类似于我们的生产者,消费者, 一个生产者,对应一个消费者. 直接上代码: package com.j1.rabbitmq.simple; import com.j1.rabbitmq.util ...
随机推荐
- 使用filebeat给多个logstash传输数据
1. filebeat.yml filebeat.inputs: - type: log enabled: true paths: - /var/log/messages - /var/log/dme ...
- 怎样在 Vue 里面使用自定义事件将子组件的数据传回给父组件?
首先, Vue 里面的组件之间的数据流动是 单向 的, 数据可以从父组件传递给子组件, 但不能从子组件传递给父组件, 因为组件和组件之间是 隔离 的. 就像两个嵌套的 黑盒子 . 能通过 props ...
- lua与c的交互(函数专用)
Lua与C的交互 Lua是一个嵌入式的语言,它不仅可以是一个独立运行的程序,也可以是一个用来嵌入其它应用的程序库. C API是一个C代码与Lua进行交互的函数集,它由以下几部分构成: 1. 读写L ...
- 【原创】大叔经验分享(60)hive和spark读取kudu表
从impala中创建kudu表之后,如果想从hive或spark sql直接读取,会报错: Caused by: java.lang.ClassNotFoundException: com.cloud ...
- opencv 一些函数的耗时计算
Release 模式 -------------------------------------------------- smooth gaussian : 2 cvtColor CV_BGR2La ...
- CentOS 7.6 64位安装docker并设置开机启动
步骤如下 安装docker.docker-compose yum -y install docker-io docker-compose 启动docker service docker start 设 ...
- Java注解【一、概述】
前面几篇Java学习笔记都是半夜写的,比较伤身体,今天开始想调整生物钟,早上起来学2小时,看看能坚持多久 本周目标: 1.JavaJDBC使用 2.JavaWeb编程 3.Java框架基础(反射+注解 ...
- 【2017-04-20】Ado.Net与面向对象结合架构中的数据访问层(实体类,数据访问类)
开发项目三层架构:界面层.业务逻辑层.数据访问层 今天学习一下数据访问层,分为实体类和数据访问类 所有的类放在App_Code这个文件夹下边.养成一个好的习惯. 一.实体类 数据库中的表映射为一个类, ...
- fragment事务 的基本处理
处理fragment事务 动态加载fragmentMyFragment2 fragment2=new MyFragment2();//new出一个fragment对象FragmentManager f ...
- Selenium(2)
testing123456peter123456rose123456 一.常见的运行错误: 1.[error] Timed out after 30000ms Timed out:超时 after:之 ...