Producer(生产者):发送消息的一方。服务器
Consumer(消费者):接收消息的一方。url
Broker(消息中间件的服务节点):rabbitmq服务器, 生产者将消息发布到broker中, 消费者从broker中订阅消息。spa
RoutingKey(路由键):生产者将消息发送到交换器的时候会指定一个RoutingKey,用来指定路由规则,且Routingkey要与交换器类型和BindingKey(绑定键) 联合使用才能生效。代理
Binding(绑定):将交换器和队列关联起来,绑定的时候通常会指定一个绑定键,这样rabbitmq就知道如何正确将消息路由到队列了。code
Queue(队列):存储消息的缓冲区。中间件
Exchange(路由器/交换器):接收生产者发来的消息,并将这些消息推送到队列中。blog
Exchange一共有四种类型:fanout,direct,topic,header 。rabbitmq
Publish/Subscribe(发布订阅模式):一个消息能够发送到多个消费者中。队列
1)链接到RabbitMQ(AMQP代理)ip
方法1:设定参数链接
ConnectionFactory factory = new ConnectionFactory(); factory.setUsername(userName);//用户名 factory.setPassword(password);//密码 factory.setVirtualHost(virtualHost);//虚拟主机 factory.setHost(hostName);//主机名 factory.setPort(portNumber);//端口号 Connection connection= factory.newConnection();
方法2:经过url链接
ConnectionFactory factory = new ConnectionFactory(); factory.setUri("amqp://username:password@ipAdress:portNum/virtualhost"); Connection connection= factory.newConnection();
2)建立通道
Channel channel=connection.createChannel();
3)声明消息队列
channel.queueDeclare(String queue, boolean durable, boolean exclusive, boolean autoDelete,Map<String, Object> arguments);
4)声明交换机
channel.exchangeDeclare(String exchange, String type, boolean durable, boolean autoDelete);
5)绑定交换机和队列。
channel.queueBind(String queue, String exchangeName, routingKey);
6)发布消息
channel.basicPublish(String exchange, String routingKey, BasicProperties props, byte[] body);
7)收消息
channel.basicConsume(String queue,boolean autoAck, Consumer callback);