RabbitMQ-Java客户端API指南-上
RabbitMQ-Java客户端API指南-上
客户端API严格按照AMQP 0-9-1协议规范进行建模,并提供了易于使用的附加抽象。
RabbitMQ Java客户端使用com.rabbitmq.client作为其顶层包。关键的类和接口是:
- Channel
- Connection
- ConnectionFactory
- Consumer
协议操作可通过Channel接口获得。Connection用于打开通道,注册连接生命周期事件处理程序,并关闭不再需要的连接。 连接是通过ConnectionFactory实例化的,这就是你如何配置各种连接设置,如虚拟主机或用户名。
Connections和Channels
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.Channel;
连接到Broker
以下代码使用给定的参数(主机名,端口号等)连接到AMQP代理:
ConnectionFactory factory = new ConnectionFactory();
factory.setUsername(userName);
factory.setPassword(password);
factory.setVirtualHost(virtualHost);
factory.setHost(hostName);
factory.setPort(portNumber);
Connection conn = factory.newConnection();
所有这些参数都对本地运行的RabbitMQ服务器具有合理的默认值。
或者,可以使用URI:
ConnectionFactory factory = new ConnectionFactory();
factory.setUri("amqp://userName:password@hostName:portNumber/virtualHost");
Connection conn = factory.newConnection();
所有这些参数都对本地运行的RabbitMQ服务器有合理的默认值。
然后接口可以用于打开一个通道:
Channel channel = conn.createChannel();
现在可以使用该通道发送和接收消息,如后面的部分所述。
要断开连接,只需关闭通道和连接:
channel.close();
conn.close();
使用Exchanges和Queues
客户端应用程序与AMQP的高级构建块交换和排队。这些必须被“声明”才可以使用。声明任何一种类型的对象只是确保其中一个名称存在,如果有必要的话创建它。
继续前面的例子,下面的代码声明一个Exchange和一个Queue,然后将它们绑定在一起。
channel.exchangeDeclare(exchangeName, "direct", true);
String queueName = channel.queueDeclare().getQueue();
channel.queueBind(queueName, exchangeName, routingKey);
这将主动声明以下对象,这两个对象都可以使用附加参数进行定制。这里他们都没有任何特别的论点。
- 一个耐用,非自动删除“直接”类型的交换
- 一个具有生成名称的非持久,独占,自动删除队列
上面的函数调用然后用给定的路由密钥将队列绑定到交换机上。
请注意,这将是一个典型的方式来声明一个队列,当只有一个客户端想要使用它:它不需要一个众所周知的名称,没有其他客户端可以使用它(独占),将自动清理(自动删除)。如果有几个客户想共享一个知名名字的队列,这个代码将是合适的:
channel.exchangeDeclare(exchangeName, "direct", true);
channel.queueDeclare(queueName, true, false, false, null);
channel.queueBind(queueName, exchangeName, routingKey);
这将主动宣布:
- 一个耐用,非自动删除“直接”类型的交换
- 一个具有众所周知名称的持久的,非排他性的非自动删除队列
请注意,所有这些Channel API方法都被重载。这些便捷的exchangeDeclare,queueDeclare和queueBind 使用合理的默认值。还有更多的参数更多的形式,让你根据需要重写这些默认值,在需要的地方给予完全控制。
这个“短形式,长形式”模式在整个客户端API使用。
RabbitMQ-Java客户端API指南-上的更多相关文章
- JAVA客户端API调用memcached两种方式
1. memcached client for java客户端API:memcached client for java 引入jar包:java-memcached-2.6.2.jar package ...
- zookeeper的Java客户端API
zookeeper作为一个分布式服务框架,主要用来解决分布式数据一致性问题,对多种语言提供了API.这里主要记录下JAVA客户端API的使用. 1.创建会话 客户端可以通过创建一个ZooKeeper实 ...
- RabbitMQ-Java客户端API指南-下
RabbitMQ-Java客户端API指南-下 使用主机列表 可以将Address数组传递给newConnection().的地址是简单地在一个方便的类com.rabbitmq.client包与主机 ...
- Zookeeper的java客户端API使用方法(五)
前面几篇博文,我们简单的介绍了一下zookeeper,如何安装zookeeper集群,以及如何使用命令行等.这篇博文我们重点来看下Zookeeper的java客户端API使用方式. 创建会话 客户端可 ...
- java客户端文件的上传和下载
java客户端文件的上传和下载 //上传 public JTable upload(String id){ JTable table=new JTable(); System.out.println( ...
- hadoop系列二:HDFS文件系统的命令及JAVA客户端API
转载请在页首明显处注明作者与出处 一:说明 此为大数据系列的一些博文,有空的话会陆续更新,包含大数据的一些内容,如hadoop,spark,storm,机器学习等. 当前使用的hadoop版本为2.6 ...
- [RabbitMQ]Java客户端:源码概览
本文简要介绍RabbitMQ提供的Java客户端中最基本的功能性接口/类及相关源码. Mavan依赖: <dependency> <groupId>com.rabbitmq&l ...
- java 客户端链接不上redis解决方案
原文地址:http://blog.csdn.net/yingxiake/article/details/51472810 出现问题描述: 1.Could not get a resource from ...
- java客户端调用ftp上传下载文件
1:java客户端上传,下载文件. package com.li.utils; import java.io.File; import java.io.FileInputStream; import ...
随机推荐
- SqlServer中怎么删除重复的记录(表中没有id)
SqlServer中怎么删除重复的记录(表中没有id) 其实我在别的网址也查到过删除重复的记录,不知道我是我SqlServer2012版本太低还是啥原因 delete from scwhere (c# ...
- SpringBoot学习5:访问静态资源
springboot默认从项目的resources里面的static目录下或者webapp目录下访问静态资源 方式一:在resources下新建static文件(文件名必须是static) 在浏览器中 ...
- Xcode 中 pch 文件配置 - iOS
一.简介 首先 pch 文件(即:Prefix Header)是一种预编译文件,在 Xcode 6 之前创建新的工程则会自动将该文件一起创建出来,但在 Xcode 6 之后苹果官方则默认将自动创建的方 ...
- (转)为什么国外 MMORPG 中不采用自动寻路等功能?
不只是自动寻路,现在网游中的教学引导系统,辅助系统的功能强大程度,友好程度都可以说到了变态的程度,开发这些功能投入的资源甚至要超过游戏内容本身.究其原因,还是竞争越来越激烈,人心越来越浮躁,游戏商家为 ...
- 课时27.base(掌握)
base标签就是专门用来统一的指定当前网页中所有的超链接(a标签)需要如何打开 格式 <base target="_blank"> <a href="h ...
- 状压DP详解(位运算)
前言: 状压DP是一种非常暴力的做法(有一些可以排除某些状态的除外),例如dp[S][v]中,S可以代表已经访问过的顶点的集合,v可以代表当前所在的顶点为v.S代表的就是一种状态(二进制表示),比如 ...
- 吴恩达DeepLearning 第一课第四周随笔
第四周 4.1深度神经网络符号约定 L=4______(神经网络层数) 4.2 校正矩阵的维数 校正要点:,, dZ,dA,dW,db都与它们被导数(Z,A,W,b)的维数相同 4.3 为什么使用 ...
- POJ:3292-Semi-prime H-numbers(艾氏筛选法拓展)
Semi-prime H-numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10466 Accepted: 4665 ...
- 搭建Linpack
环境:vmware workstation14 + centos7(linux基本都可以) 一.开始安装mpich 1. 解决依赖gcc gcc-gfortran sudo yum install g ...
- 20145202马超 《Java程序设计》第九周学习总结
JDBC 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找. JDBC(Java DataBase Connectivity)是Java联机数据库 ...