之前已经讲解了如何安装这个软件,还有就是对管理界面的解释。现在我们上手使用一下这个软件吧。
回顾AMQP
之前我们已经讲过,这个rabbitmq软件就是基于这个AMQP协议的。
这个协议也是基于生产者和消费者模型的。
rabbitmq使用的图解
rabbitmq软件里面有虚拟主机 Virtual Host ,这个虚拟主机的意思就是和数据库一样,每一个数据库里面的东西属于哪个项目,这个可以区分。
所以现在我们有很多的项目都可以访问这一个rabbitmq软件,每一个项目就可以根据这个虚拟主机找到和自己相关的信息。
以后就是一个项目访问一个虚拟主机。每一个虚拟主机都要绑定一个用户,就是不同的用户访问不同的虚拟主机。
以后我们创建了虚拟主机,创建了用户,要将这两个进行绑定。
第一个rabbitmq的项目?
1 创建一个maven项目,里面导入依赖
代码语言:javascript复制 <dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.7.3</version>
</dependency>
不管是消费者还是提供者项目,都只需要有这个依赖就可以和rabbitmq软件打交道了
2 在web管理的界面上面建立一个虚拟主机
点击了以上的按钮,就进入了创建虚拟主机的页面
以上就是创建了一个虚拟主机
我们再创建一个用户,让这个用户和这个虚拟主机进行绑定
以上步骤就是创建了一个用户,创建完成之后的界面是
之后给这个admin用户绑定虚拟主机,点击进去这个admin用户的详情
以上就是我们已经给这个admin用户创建了这个权限。
3 开发生产者子项目
前面已经在rabbitmq软件里面创建了新用户和虚拟主机,并且也进行了绑定。现在开始开发提供者项目。这个服务端的项目是要发消息 的,那么以什么模型进行发呢?rabbitmq提供了很多发消息的模型,现在开始先讲第一种,直连模型
直连模型
这个模型意思是,提供给你一个服务端,一个队列,一个消费者
代码实现发送者
之前已经导入了rabbitmq的依赖,现在直接创建一个java类,这个类里面需要做的就是用rabbitmq依赖里面的一个工厂类创建工厂对象,之后利用这个工厂对象就可以连接这个rabbitmq的软件了,就可以操作这个软件了。
因为这个先讲直连模式,就是只有队列,里面没有交换机的形式,所以我们在代码里面就不需要写和交换机相关的代码。
代码语言:javascript复制public class provider {
@Test
public void SendMessage() throws IOException, TimeoutException {
// 创建连接mq的连接工厂对象,这个是依赖里面的类,我们只需要拿过来创建对象就可以了
ConnectionFactory connectionFactory = new ConnectionFactory();
// 设置连接rabbitmq的ip
connectionFactory.setHost("192.168.40.145");
// 设置端口号
connectionFactory.setPort(5672);
// 设置连接的虚拟的主机
connectionFactory.setVirtualHost("/ems");
// 设置访问虚拟主机的用户名和密码
connectionFactory.setUsername("ems");
connectionFactory.setPassword("123");
// 获取连接对象
Connection connection = connectionFactory.newConnection();
// 创建通道
Channel channel = connection.createChannel();
// 让通道和消息队列进行绑定
channel.queueDeclare("hello",false,false,false,null);
channel.basicPublish("","hello",null,"hello jing".getBytes());
channel.close();
connection.close();
}
}
运行以上的代码之后,我们看控制台
以上是执行成功,这个执行完之后,意思就是已经利用代码 将消息发送到rabbitmq软件里面了,我们从rabbitmq软件的控制台里面看看有没有
以上的意思就是
在虚拟主机ems里面,有一个hello的队列
这个队列里面有一个消息,没有被消费了,我们再执行一次代码,看这个队列里面的变化
看,变为了2,说明这个hello的队列里面有2个消息还没有被消费。
这个管理界面有一个自动刷新的按钮
以上的工作 ,就是在队列里面已经利用代码放数据了。
之后,我们看看如何利用代码从队列里面拿数据