RabbitMQ Java客户端库3.5.4版本文档翻译:接口Channel,Interface Channel
com.rabbitmq.client
public interface Channel
extends ShutdownNotifier
对于频道的接口。这个接口中,所有的未废弃的方法,都是公有API 的一部分。
RabbitMQ教程 ,展示了这个接口中的那些关键方法都应该怎么用。
参考 Java客户端使用指南 。
Channel 实例 不能在不同线程之间共享。 在应用程序中,应当让每个线程使用一个单独的 Channel ,而不是在多个线程之间共享同一个 Channel 。尽管频道 (channels)的某些操作 是可以并发调用的,但是, 另一些却是不可以并发调用的,强行并发调用 的话,会引起实际传输 数据 中的各个帧内容 发生交叉。另外 ,在多个线程之间共享频道,也会干扰到 发布者确认 。因此 ,应用程序 中应当在每个线程中使用各自的 Channel 。
参考 :
RabbitMQ教程 、 RabbitMQ Java客户端使用指南
void close()
throws java.io.IOException,
java.util.concurrent.TimeoutException
关闭 这个频道,同时附带 AMQP.REPLY_SUCCESS 这个关闭代码及消息'OK'。
抛出异常 :
java.io.IOException - 如果 发生错误,则抛出此异常
java.util.concurrent.TimeoutException
void close(int closeCode,
java.lang.String closeMessage)
throws java.io.IOException,
java.util.concurrent.TimeoutException
关闭这个频道。
参数 :
closeCode - 关闭代码(参考AMQP 规范 中的 "Reply Codes")
closeMessage - 一条消息,说明关闭连接的原因
抛出异常 :
java.io.IOException - 如果 发生错误,则抛出此异常
java.util.concurrent.TimeoutException
void abort()
throws java.io.IOException
终止 这个频道,同时附带 AMQP.REPLY_SUCCESS 这个关闭代码及消息'OK'。强制 让这个频道关闭,并且等待关闭操作执行完毕 。 在这个关闭过程中发生的任何异常,都会被静静地忽略掉。
抛出异常 :
java.io.IOException
void abort(int closeCode,
java.lang.String closeMessage)
throws java.io.IOException
终止这个频道。强制让这个频道关闭,并且等待关闭操作执行完毕。在这个关闭过程中发生的任何异常,都会被静静地忽略掉。
抛出异常 :
java.io.IOException
void addConfirmListener( ConfirmListener listener)
添加 一个 ConfirmListener 。
参数 :
listener - 要添加的监听器
boolean removeConfirmListener( ConfirmListener listener)
移除 一个 ConfirmListener 。
参数 :
listener - 要移除的监听器
返回 :
true 表明 该监听器确实被找到并且被移除了,否则会返回 false
void clearConfirmListeners()
移除所有 的 ConfirmListener 。
Consumer getDefaultConsumer()
获取当前的默认消费者。参考setDefaultConsumer。
返回 :
当前默认消费者的一个接口。
void setDefaultConsumer( Consumer consumer)
设置当前的默认消费者。在特定的情况下,可能会发生这样的事:某个频道接收到一条消息,而该消息却并不匹配通过basicConsume()设置的任何消费者。在发生了以下事件序列之后,就可能发生这种事:
ctag = basicConsume(queue, consumer); //也就是说,使用显式的确认(acks)
//发生了某些消息传递,但是尚未被确认
basicCancel(ctag);
basicRecover(false);
由重新入队(requeue)参数在basicRecover 中被指定为假(false),所以,按照规范,这条消息必须被重新传递给"最初的接收者"——也就是,同一个频道/消费者标记组合。但是,该消费者不再处于活跃状态。在这种情况下,妳可以注册一个默认消费者来处理这些传递消息。如果未注册默认消费者,那么,当发生这种传递事件时,会抛出IllegalStateException 异常。大部分人儿不需要使用这个。
参数 :
consumer - 要使用的消费者,或者 ,传入 null 则表明 " 不要使用 " 。
void basicQos(int prefetchSize,
int prefetchCount,
boolean global)
throws java.io.IOException
请求做出特定的"服务质量"设置。这些设置,控制的是,服务器在接收到确认消息之前,会向消费者传递的数据的数量。它们提供了一种由消费者主导的流控手段。
参数 :
prefetchSize - 服务器传递 的内容的最大长度 ( 以 八位元组(octets)的个数来度量 ) , 0表示 无限制
prefetchCount - 服务器传递 的最大消息个数, 0表示 无限制
global - 为真( true )则表示,这些设置,应当 被应用到整个频道 ,而不是只应用到单个消费者
抛出异常 :
java.io.IOException - 如果出现错误 , 则 抛出此异常
参考 :
void basicQos(int prefetchCount,
boolean global)
throws java.io.IOException
请求为此频道应用一个指定预取个数(prefetchCount)的"服务质量"设置。
参数 :
prefetchCount - 服务器传递 的最大消息个数, 0表示 无限制
global - 为真( true )则表示,这些设置,应当 被应用到整个频道 ,而不是只应用到单个消费者
抛出异常 :
java.io.IOException - 如果出现错误 , 则 抛出此异常
参考 :
void basicQos(int prefetchCount)
throws java.io.IOException
请求为此频道应用一个指定预取个数(prefetchCount)的"服务质量"设置。
参数 :
prefetchCount - 服务器传递 的最大消息个数, 0表示 无限制
抛出异常 :
java.io.IOException - 如果出现错误 , 则 抛出此异常
参考 :
void basicPublish(java.lang.String exchange,
java.lang.String routingKey,
AMQP.BasicProperties props,
byte[] body)
throws java.io.IOException
发布一条消息。 向一个不存在的交换机(exchange)发布消息的话,会引 发 频道级别 的 协议异常 ,使得频道被关闭。如果当前 正发生着一个 资源 不足引发的警告 ,那么,对于 Channel#basicPublish 的调用会阻塞住。
参数 :
exchange - 要向其发布消息的交换机
routingKey - 路由 键
props - 该条消息的其它属性——路由协议 头等等
body - 消息 体
抛出异常 :
java.io.IOException - 如果出现错误 , 则 抛出此异常
参考 :
void basicPublish(java.lang.String exchange,
java.lang.String routingKey,
boolean mandatory,
AMQP.BasicProperties props,
byte[] body)
throws java.io.IOException
发布一条消息。 如果当前 正发生着一个 资源 不足引发的警告 ,那么,对于 Channel#basicPublish 的调用会阻塞住。
参数 :
exchange - 要向其发布消息的交换机
routingKey - 路由 键
mandatory - 为真( true ),则表示要设置 “托管”( 'mandatory' )标志位
props - 该条消息的其它属性——路由协议 头等等
body - 消息 体
抛出异常:
java.io.IOException - 如果出现错误 , 则 抛出此异常
参考 :
void basicPublish(java.lang.String exchange,
java.lang.String routingKey,
boolean mandatory,
boolean immediate,
AMQP.BasicProperties props,
byte[] body)
throws java.io.IOException
发布一条消息。 向一个不存在的交换机(exchange)发布消息的话,会引 发 频道级别 的 协议异常 ,使得频道被关闭。如果当前 正发生着一个 资源 不足引发的警告 ,那么,对于 Channel#basicPublish 的调用会阻塞住。
参数 :
exchange - 要向其发布消息的交换机
routingKey - 路由 键
mandatory - 为真( true ),则表示要设置 “托管”( 'mandatory' )标志位
immediate - 为真( true ),则表示要设置“立即”( 'immediate' )标志位。注意, RabbitMQ服务器 不支持这个标志位。
props - 该条消息的其它属性——路由协议 头等等
body - 消息 体
抛出异常:
java.io.IOException - 如果出现错误 , 则 抛出此异常
参考 :
AMQP.Exchange.DeclareOk exchangeDeclare(java.lang.String exchange,
java.lang.String type)
throws java.io.IOException
主动声明一个非自动删除(non-autodelete)、非持久性(non-durable)的交换机,不带任何其它参数。
参数 :
exchange - 交换机 的名字
type - 交换机 的类型
返回 :
一个声明确认方法,用来表明交换机已被成功声明。
抛出异常 :
java.io.IOException - 如果出现错误 , 则 抛出此异常
参考 :
AMQP.Exchange.DeclareOk exchangeDeclare(java.lang.String exchange,
java.lang.String type,
boolean durable)
throws java.io.IOException
主动声明一个非自动删除(non-autodelete)的交换机,不带任何其它参数。
参数 :
exchange - 交换机 的名字
type - 交换机 的类型
durable - 为真( true )则表明声明一个持久性(durable)的交换机( 当服务器重启后,此交换机仍然存在 )
返回 :
一个声明确认方法,用来表明交换机已被成功声明。
抛出异常 :
java.io.IOException - 如果出现错误 , 则 抛出此异常
参考 :
AMQP.Exchange.DeclareOk exchangeDeclare(java.lang.String exchange,
java.lang.String type,
boolean durable,
boolean autoDelete,
java.util.Map<java.lang.String,java.lang.Object> arguments)
throws java.io.IOException
声明一个交换机。
参数 :
exchange - 交换机 的名字
type - 交换机 的类型
durable - 为真( true )则表明声明一个持久性(durable)的交换机( 当服务器重启后,此交换机仍然存在 )
autoDelete - 为真( true )则表明,当该交换机不再被使用时,应当由服务器删除
arguments - 该交换机的其它属性 (构造参数)
返回 :
一个声明确认方法,用来表明交换机已被成功声明。
抛出异常 :
java.io.IOException - 如果出现错误 , 则 抛出此异常
参考 :
AMQP.Exchange.DeclareOk exchangeDeclare(java.lang.String exchange,
java.lang.String type,
boolean durable,
boolean autoDelete,
boolean internal,
java.util.Map<java.lang.String,java.lang.Object> arguments)
throws java.io.IOException
通过一个允许传递完整参数集合的接口来声明一个交换机。
参数 :
exchange - 交换机 的名字
type - 交换机 的类型
durable - 为真( true )则表明声明一个持久性(durable)的交换机( 当服务器重启后,此交换机仍然存在 )
autoDelete - 为真( true )则表明,当该交换机不再被使用时,应当由服务器删除
internal - 为真( true )则表明, 该交换机是内部使用的,也就是说,客户端 不可以直接向该交换机发布消息。
arguments - 该交换机的其它属性 (构造参数)
返回 :
一个声明确认方法,用来表明交换机已被成功声明。
抛出异常:
java.io.IOException - 如果出现错误 , 则 抛出此异常
参考 :
AMQP.Exchange.DeleteOk exchangeDelete(java.lang.String exchange)
throws java.io.IOException
删除一个交换机,无论它是否正在使用
参数 :
exchange - 交换机 的名字
返回 :
一个删除确认方法,用来表明交换机已被成功删除。
抛出异常:
java.io.IOException - 如果出现错误 , 则 抛出此异常
参考 :
AMQP.Queue.DeclareOk queueDeclare()
throws java.io.IOException
主动声明一个由服务器命名的、排它性的(exclusive)、自动删除的、非持久的队列。队列 的名字, 由所返回的 AMQP.Queue.DeclareOk 结果中的"queue"字段提供。
返回 :
一个声明确认方法,用来表明队列已被成功声明。
抛出异常:
java.io.IOException - 如果出现错误 , 则 抛出此异常
参考 :
AMQP.Queue.DeclareOk queueDeclare(java.lang.String queue,
boolean durable,
boolean exclusive,
boolean autoDelete,
java.util.Map<java.lang.String,java.lang.Object> arguments)
throws java.io.IOException
声明一个队列
Parameters:
queue - 队列的名字
durable - 为真( true ),则表明,我们要声明一个持久(durable)队列 (服务器重启之后 ,该队列仍然存在 )
exclusive - 为真( true ),则表明,我们要声明一个排他性(exclusive)的队列 ( 仅限于这个连接中 )
autoDelete - 为真( true ),则表明,我们要声明一个自动删除的队列 (服务器 会在它不再被使用时删除它 )
arguments - 队列 的其它属性 (构造参数)
返回 :
一个声明确认方法,用来表明队列已被成功声明。
抛出异常 :
java.io.IOException - 如果出现错误 , 则 抛出此异常
参考 :
AMQP.Queue.DeleteOk queueDelete(java.lang.String queue)
throws java.io.IOException
删除一个队列,无论它是否正被使用、是否包含着消息
参数 :
queue - 队列的名字
返回 :
一个删除确认方法,用来表明队列已被成功删除。
抛出异常 :
java.io.IOException - 如果出现错误 , 则 抛出此异常
参考 :
AMQP.Queue.BindOk queueBind(java.lang.String queue,
java.lang.String exchange,
java.lang.String routingKey)
throws java.io.IOException
将某个队列绑定到一个交换机,不带任何其它参数。
参数 :
queue - 队列的名字
exchange - 交换机 的名字
routingKey - 用于绑定过程 的路由键
返回 :
一个绑定确认方法,用来表明绑定已被成功创建。
抛出异常 :
java.io.IOException - 如果出现错误 , 则 抛出此异常
参考 :
AMQP.Queue.BindOk queueBind(java.lang.String queue,
java.lang.String exchange,
java.lang.String routingKey,
java.util.Map<java.lang.String,java.lang.Object> arguments)
throws java.io.IOException
将某个队列与一个交换机绑定。
参数 :
queue - 队列的名字
exchange - 交换机 的名字
routingKey - 用于绑定过程 的路由键
arguments - 其它 属 性(绑定参数)
返回 :
一个绑定确认方法,用来表明绑定已被成功创建。
抛出异常 :
java.io.IOException - 如果出现错误 , 则 抛出此异常
参考 :
AMQP.Queue.UnbindOk queueUnbind(java.lang.String queue,
java.lang.String exchange,
java.lang.String routingKey)
throws java.io.IOException
将某个队列与某个交换机解除绑定,不带任何其它参数。
参数 :
queue - 队列的名字
exchange - 交换机 的名字
routingKey - 用于绑定过程 的路由键
返回 :
一个解除绑定确认方法,表明,该绑定是否被成功删除
抛出异常 :
java.io.IOException - 如果出现错误 , 则 抛出此异常
参考 :
AMQP.Queue.UnbindOk queueUnbind(java.lang.String queue,
java.lang.String exchange,
java.lang.String routingKey,
java.util.Map<java.lang.String,java.lang.Object> arguments)
throws java.io.IOException
解除某个队列与某个交换机的绑定。
参数 :
queue - 队列的名字
exchange - 交换机 的名字
routingKey - 用于绑定过程 的路由键
arguments - 其它参数(绑定参数)
返回 :
一个解除绑定确认方法,表明,该绑定是否被成功删除
抛出异常 :
java.io.IOException - 如果出现错误 , 则 抛出此异常
参考 :
void basicAck(long deliveryTag,
boolean multiple)
throws java.io.IOException
确认 一条或多条在之前接收到的消息。提供之前通过 AMQP.Basic.GetOk 或 AMQP.Basic.Deliver 方法获取到的传递标记(deliveryTag),用来表示 要确认的消息。
参数 :
deliveryTag - 之前通过 AMQP.Basic.GetOk 或 AMQP.Basic.Deliver 获取到的标记
multiple - 为真( true ),则表明, 将当前提供的标记所对应的消息以及之前的消息都确认掉; 为假( false ),则表明, 只确认当前提供的标记所对应的那条消息。
抛出异常 :
java.io.IOException - 如果出现错误 , 则 抛出此异常
参考 :
java.lang.String basicConsume(java.lang.String queue,
Consumer callback)
throws java.io.IOException
启动一个非本地的(non-nolocal)、非排他性的(non-exclusive)消费者,并且使用显式的确认及服务器生成的消费者标记(consumerTag)。
参数 :
queue - 队列的名字
callback - 消费 者对象的接口
返回 :
由服务器生成的消费者标记(consumerTag)
抛出异常 :
java.io.IOException - 如果出现错误 , 则 抛出此异常
参考 :
AMQP.Basic.Consume 、 AMQP.Basic.ConsumeOk 、 basicAck(long, boolean) 、 basicConsume(String, boolean, String, boolean, boolean, Map, Consumer)
java.lang.String basicConsume(java.lang.String queue,
boolean autoAck,
Consumer callback)
throws java.io.IOException
启动一个非本地的(non-nolocal)、非排他性的(non-exclusive)消费者,并且使用服务器生成的消费者标记(consumerTag)。
参数 :
queue - 队列的名字
autoAck - 为真( true ),则表明, 当消息被传递到消费者时,服务器就可以认为它已经被确认了; 为假( false ),则表明,服务 器应当期待 着收到显式的确认
callback - 消费 者对象的接口
返回 :
由服务器生成的消费者标记(consumerTag)
抛出异常 :
java.io.IOException - 如果出现错误 , 则 抛出此异常
参考 :
AMQP.Basic.Consume 、 AMQP.Basic.ConsumeOk 、 basicConsume(String, boolean, String, boolean, boolean, Map, Consumer)
java.lang.String basicConsume(java.lang.String queue,
boolean autoAck,
java.util.Map<java.lang.String,java.lang.Object> arguments,
Consumer callback)
throws java.io.IOException
启动一个非本地的(non-nolocal)、非排他性的(non-exclusive)消费者,并且使用指定的参数和服务器生成的消费者标记(consumerTag)。
参数 :
queue - 队列的名字
autoAck - 为真( true ),则表明, 当消息被传递到消费者时,服务器就可以认为它已经被确认了; 为假( false ),则表明,服务 器应当期待 着收到显式的确认
arguments - 针对消费 者设置的一系列参数
callback - 消费 者对象的接口
返回 :
由服务器生成的消费者标记(consumerTag)
抛出异常 :
java.io.IOException - 如果出现错误 , 则 抛出此异常
参考 :
AMQP.Basic.Consume 、 AMQP.Basic.ConsumeOk 、 basicConsume(String, boolean, String, boolean, boolean, Map, Consumer)
java.lang.String basicConsume(java.lang.String queue,
boolean autoAck,
java.lang.String consumerTag,
Consumer callback)
throws java.io.IOException
启动一个非本地的(non-nolocal)、非排他性的(non-exclusive)消费者。
参数 :
queue - 队列的名字
autoAck - 为真( true ),则表明, 当消息被传递到消费者时,服务器就可以认为它已经被确认了; 为假( false ),则表明,服务 器应当期待 着收到显式的确认
consumerTag - 由客户端生成的消费者标记,用来建立上下文联系
callback - 消费 者对象的接口
返回 :
与新的消费者相关联的消费者标记(consumerTag)
抛出异常:
java.io.IOException - 如果出现错误 , 则 抛出此异常
参考 :
AMQP.Basic.Consume 、 AMQP.Basic.ConsumeOk 、 basicConsume(String, boolean, String, boolean, boolean, Map, Consumer)
java.lang.String basicConsume(java.lang.String queue,
boolean autoAck,
java.lang.String consumerTag,
boolean noLocal,
boolean exclusive,
java.util.Map<java.lang.String,java.lang.Object> arguments,
Consumer callback)
throws java.io.IOException
启动 一个消费者。调用该消费者的 Consumer.handleConsumeOk(java.lang.String) 方法。
参数 :
queue - 队列的名字
autoAck - 为真( true ),则表明, 当消息被传递到消费者时,服务器就可以认为它已经被确认了; 为假( false ),则表明,服务 器应当期待 着收到显式的确认
consumerTag - 由客户端生成的消费者标记,用来建立上下文联系
noLocal - 为真( true ),则表示,服务器不应当将这个频道的连接上发布的消息传递给这个消费者
exclusive - 为真( true ),则表明,这是一个排他性的消费者
callback - 消费 者对象的接口
arguments - 针对消费 者设置的一系列参数
返回 :
与新的消费者相关联的消费者标记(consumerTag)
抛出异常:
java.io.IOException - 如果出现错误 , 则 抛出此异常
参考 :
void basicCancel(java.lang.String consumerTag)
throws java.io.IOException
取消 一个消费者。调用该消费者的 Consumer.handleCancelOk(java.lang.String) 方法。
参数 :
consumerTag - 由客户端或服务器生成的用来关联上下文的消费者标记
抛出异常:
java.io.IOException - 如果 发生了错误,或者,该消费者标记(consumerTag)是未知的,则抛出此异常
参考 :
AMQP.Confirm.SelectOk confirmSelect()
throws java.io.IOException
在这个频道上启用发布者确认功能。
抛出异常:
java.io.IOException - 如果 发生了错误,则抛出此异常
参考 :
void asyncRpc( Method method)
throws java.io.IOException
在这个频道上,异步地发送一个方法。
参数 :
method - 要通过这个频道传输的方法。
抛出异常 :
java.io.IOException - 如果 在传输方法的过程中出现问题,则抛出此异常。
辽宁东港出现80后女副市长 官方称按程序晋升
2013年01月11日14:24
东港市副市长 董海涛
4月1日
(金)
Your opinionsHxLauncher: Launch Android applications by voice commands