基础篇:
安装rabbitmq:
docker run \
-e RABBITMQ_DEFAULT_USER=itheima \ -e RABBITMQ_DEFAULT_PASS=123321 \ -v mq-plugins:/plugins \ --name mq \
--hostname mq \
-p 15672:15672 \ -p 5672:5672 \ --network hmall \ -d \ rabbitmq:3.8-management
如果报错:
docker: Error response from daemon: network hm-net not found.
原因是在容器启动时,所需的网络环境没有正确配置。
检查网络列表
docker network ls
创建所需网络
docker network create hm-net
运行容器时指定网络
docker run -d --net=hm-net rabbitmq:3.8-management
重新启动容器
docker restart mq
打开浏览器输入这个:192.168.17.128:15672
进入rabbitmq登录界面
总结规律:
1.交换机只能路由和转发消息,不能储存消息
2.一旦队列绑定交换机,使用交换机发送消息,绑定该交换机的队列都能收到消息
Java客户端-快速入门:
SpringAMQP如何收发消息:
配置yml文件:
spring:
rabbitmq:
host: 192.168.17.128 # 你的虚拟机IP
port: 5672 # 端口
virtual-host: /hmall # 虚拟主机
username: hmall # 用户名
password: 123 # 密码
发送消息:
@SpringBootTest
public class SpringAmqpTest {
@Autowired
private RabbitTemplate rabbitTemplate;
@Test
public void test1(){
String queueName="simple.queue";
String msg="hello111,amqp!";
rabbitTemplate.convertAndSend(queueName,msg);
}
}
接收消息:
@Slf4j
@Component
public class Mqlistener {
@RabbitListener(queues = "simple.queue")
public void listenSimpleQueue(String msg){
System.out.println("消费者收到了simple.queue类的消息:"+msg);
}
}
spring:
rabbitmq:
host: 192.168.17.128 # 你的虚拟机IP
port: 5672 # 端口
virtual-host: /hmall # 虚拟主机
username: hmall # 用户名
password: 123 # 密码
listener:
direct:
prefetch: 1