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);