赞
踩
RabbitMQ接口分为 通道、交换器、路由、和队列4个模块
生产者/消费者连接消息队列,创建通道,创建交换器,创建队列。把队列绑定到交换器上。
生产者发送消息到交换器,交换器根据路由把消息转到不同队列上。
消费者创建通道后,指定交换器,路由,和队列。
交换器:
DIRECT("direct"), FANOUT("fanout"), TOPIC("topic"), HEADERS("headers");
测试代码
- package com.cn.rabbitmq.cp1.exchange;
-
- import com.rabbitmq.client.Connection;
- import com.rabbitmq.client.ConnectionFactory;
- import com.rabbitmq.client.impl.ErrorOnWriteListener;
-
- import java.io.IOException;
-
- public class BaseQueue {
-
- public static Connection getConnection() throws Exception{
- ConnectionFactory factory = new ConnectionFactory();
- factory.setHost("127.0.0.1");
- factory.setUsername("guest");
- factory.setPassword("guest");
- factory.setErrorOnWriteListener(new ErrorOnWriteListener() {
- public void handle(Connection connection, IOException exception) throws IOException {
-
- }
- });
- return factory.newConnection();
- }
-
- }
服务端发送消息:
- package com.cn.rabbitmq.cp1.exchange.topic;
-
- import com.cn.rabbitmq.cp1.exchange.BaseQueue;
- import com.rabbitmq.client.*;
-
- import java.io.IOException;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.Random;
-
- /**
- * 队列参数说明:
- * 队列名称 queue :队列名
- * 是否持久队列 durable :true 持久队列,该队列将在服务器重新启动后继续存在。当然了,队列的消息内容也会被写入磁盘
- * 是否独占队列 (单消费者队列)exclusive : 如果需要消费者独占队列,在队列创建的时候,设定属性exclusive为true。 只能有一个消费者
- * 是否自动删除 autoDelete :自动删除队列,客户端连接时自动删除。 服务端会连接会不会删除?
- *
- *
- * 其他参数 arguments
- * 参数名 目的
- * x-dead-letter-exchange 死信交换器
- * x-dead-letter-routing-key 死信消息的可选路由键
- * x-expires 队列在指
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。