管理面板:(好用)
http://localhost:15672/
基本功能可以在网页上进行,创建vhost等高级功能需要命令行.
Channel : 信道.一个连接多个Channel. 节省开销.Exchange: 交换器.Queue: 队列. 带名字的邮箱.Binding: 绑定.// 路由规则
基本工作流程:
- 配置类:
创建exchange,queue;
为某个exchange创建binding(路由规则).
比如为exchange1创建规则:routing key 为info的,转发到 queue1中.
2.生产者:
将消息打上routing key,发送到某个exchange中.
如果不指定exchange,默认发送到名为””的exchange中.
3.消费者:
从某个queue提取消息.
4.exchange:
根据配置好的路由规则,转发收到的消息到符合的queue.
basic.cosume: 订阅
basic.get : 先订阅,然后获取一条,然后取消订阅.
同一个队列多个消费者的话,1个消费者取了消息(ack),消息被删除,别的消费者就取不到了. 因此这种情况应该使用多个队列.(每人有自己的邮箱)
exclusive: 声明队列为私有的.(单消费者)durable: 适用于交换器和队列,重启后是否消失.
msg–>Exchange->Queue
生产者:
msg–>Exchange
消费者:Queue->msg
RabbitMQ:Exchange–binding–>Queue
e.g:
| 1 | binding: | 
Exchange
- direct 直连
- fanout 一个消息到多个队列
- topic 多个消息到一个队列
- header // 不实用,即将弃用
默认Exchange名字为空字符串"",连接到所有队列.
| 1 | private static final String DEFAULT_EXCHANGE = ""; | 
topic的routing key格式:
- *: 通配符,- .以外的任何字符任意个
- .: 分隔符
- #: 所有队列.
vhost (多租户)
默认vhost是/.
每个vhost里可以有自己的Exchange,Queue,用户,权限等等.
彼此隔离.
持久化消息
- 投递时指定
- 投递到持久交换器
- 投递到持久队列
