标签:div body col connect 连接 sicp 消息队列 class throw
一 .概述
Rabbitmq的java客户端的API是本人见过的最垃圾的API的设计,没有之一.
在这些API之中,竟然使用了方法的重载代表了不同的行为,这也是服气到不行.
二 .消息的发布
我们首先看看核心的API:
void basicPublish(String exchange, String routingKey, boolean mandatory, BasicProperties props, byte[] body)
throws IOException;
我们可以从上面看到,发送一个消息最重要的就是制定一个交换机和路由键,然后最后的参数就是设置消息的内容,中间的参数就是一些附加的属性.
我们还发现了一个mandatory参数,这个在后面去介绍.
我们一般不会使用最长的那一个方法,其中的immediate这个参数已经被废弃了.
记住:
[1]找到一个交换机
[2]给出一个路由键
[3]发送一个消息
参数和mandatory需要的时候再去设置.
二 .声明交换机
在上面,我们看到发布一个消息首先需要声明一个交换机.
void exchangeDeclareNoWait(String exchange, String type, boolean durable, boolean autoDelete, boolean internal, Map<String, Object> arguments) throws IOException;
我们就介绍一下这个最长的方法.
[1]交换机的名称
[2]交换机的类型
[3]交换机是否持久化
[4]是否自动删除(如果这个交换机没有任何一个队列与它有关系,那么它就会被自动删除)
[5]internal : 这个我们一般设置为false
[6]附加的参数,对交换机的属性进行设置,这个在后面需要的时候会去介绍
三 .声明消息队列
Queue.DeclareOk queueDeclare(String queue, boolean durable, boolean exclusive, boolean autoDelete,
Map<String, Object> arguments) throws IOException;
我们只需要介绍这个最长的参数就可以了.
[1]消息队列的名称
[2]是否持久化
[3]是否排他 : 那一个连接(Connection)声明的他,这个队列就会对这个连接有效,当连接断开的时候,这个队列自动删除了.一般情况下,我们不会设置的.
[4]是否自动删除
[5]附加的参数
四 .绑定
所谓的绑定在前面已经说明过了,就是将消息队列和交换机进行连接,其中,我们需要给出一个绑定键.
同时还存在交换机和交换机的绑定,这种我们现在先不去说.
Queue.BindOk queueBind(String queue, String exchange, String routingKey, Map<String, Object> arguments) throws IOException;
上面的参数比较的简单,就是给出一个队列的名称,然后一个交换机的名称,然后给出一个绑定键的名称就好了.
标签:div body col connect 连接 sicp 消息队列 class throw
原文地址:https://www.cnblogs.com/trekxu/p/9778152.html