目录
(3.4.2)基础消息队列(RabbitTemplate模板实现)。



下载容器:
docker pull rabbitmq:3-management
启动容器:
- docker run \
- -e RABBITMQ_DEFAULT_USER=itcast \
- -e RABBITMQ_DEFAULT_PASS=123321 \
- --name mq \
- --hostname mq1 \
- -p 15672:15672 \
- -p 5672:5672 \
- -d \
- rabbitmq:3-management
浏览器访问:



提示:AMQP是协议,SpringAMQP是基于AMQP实现的一套API。

消息发送:
- public class PublisherTest {
- @Test
- public void testSendMessage() throws IOException, TimeoutException {
- // 1.建立连接
- ConnectionFactory factory = new ConnectionFactory();
- // 1.1.设置连接参数,分别是:主机名、端口号、vhost、用户名、密码
- factory.setHost("192.168.150.101");
- factory.setPort(5672);
- factory.setVirtualHost("/");
- factory.setUsername("itcast");
- factory.setPassword("123321");
- // 1.2.建立连接
- Connection connection = factory.newConnection();
- // 2.创建通道Channel
- Channel channel = connection.createChannel();
- // 3.创建队列
- String queueName = "simple.queue";
- channel.queueDeclare(queueName, false, false, false, null);
- // 4.发送消息
- String message = "hello, rabbitmq!";
- channel.basicPublish("", queueName, null, message.getBytes());
- System.out.println("发送消息成功:【" + message + "】");
- // 5.关闭通道和连接
- channel.close();
- connection.close();
- }
- }
消息接收:
- public class ConsumerTest {
- public static void main(String[] args) throws IOException, TimeoutException {
- // 1.建立连接
- ConnectionFactory factory = new ConnectionFactory();
- // 1.1.设置连接参数,分别是:主机名、端口号、vhost、用户名、密码
- factory.setHost("192.168.150.101");
- factory.setPort(5672);
- factory.setVirtualHost("/");
- factory.setUsername("itcast");
- factory.setPassword("123321");
- // 1.2.建立连接
- Connection connection = factory.newConnection();
- // 2.创建通道Channel
- Channel channel = connection.createChannel()
- // 3.创建队列
- String queueName = "simple.queue";
- channel.queueDeclare(queueName, false, false, false, null);
- // 4.订阅消息
- channel.basicConsume(queueName, true, new DefaultConsumer(channel){
- @Override
- public void handleDelivery(String consumerTag, Envelope envelope,
- AMQP.BasicProperties properties, byte[] body) throws IOException {
- // 5.处理消息
- String message = new String(body);
- System.out.println("接收到消息:【" + message + "】");
- }
- });
- System.out.println("等待接收消息。。。。");
- }
- }


与simple的区别:多了一个设置消费预存限制。

提示:绑定键使用空字符串,就可以完成广播(发给所有绑定该交换机的队列)。

提示:需要提供绑定键(路由键),根据 交换机+绑定键 映射。


