合肥公司网站开发,学生做的网站需要备案,郑州小型网站制作公司,郑州黑帽seo培训目录
部署demo项目
什么是基本消息模型
实现基本消息模型 部署demo项目
首先配置好一个mq的练习demo,并配置好相关依赖
链接#xff1a;https://pan.baidu.com/s/1oXAqgoz9Y_5V7YxC_rLa-Q?pwdv2sg 提取码#xff1a;v2sg
如图
父xml文件已经配置好了 AMQP依赖了 什么…目录
部署demo项目
什么是基本消息模型
实现基本消息模型 部署demo项目
首先配置好一个mq的练习demo,并配置好相关依赖
链接https://pan.baidu.com/s/1oXAqgoz9Y_5V7YxC_rLa-Q?pwdv2sg 提取码v2sg
如图
父xml文件已经配置好了 AMQP依赖了 什么是基本消息模型
基本消息模型 : 生产者直接将消息发送到队列,消费者直接监听消息队列, 少了一个交换机接收和路由消息的步骤 实现基本消息模型 1.控制台创建队列 2.编写生产者代码
首先配置MQ地址在publisher服务的application.yml中添加配置 spring:rabbitmq:host: 47.115.204.241 # 你的虚拟机IPport: 5672 # 端口virtual-host: / # 虚拟主机username: itheima # 你的用户名password: 123321 # 你的密码在配置虚拟主机时,我最开始用的是ALL,然后报错;了,后来我改为用 / 就成功运行了 在使用 Spring AMQP 进行消息传递时虚拟主机Virtual Host是用于隔离不同应用程序之间的消息队列和交换机的机制。通常情况下虚拟主机的名称是一个路径样式的字符串类似于文件系统中的路径可以使用斜杠 / 来表示不同的层级。 问题可能出在使用 ALL 作为虚拟主机名称时导致了异常。一般来说虚拟主机名称中不建议使用特殊字符或保留字因为这可能会引起解析问题或与系统关键字冲突。 在你的情况下将虚拟主机名称从 ALL 更改为 / 可能是一个有效的解决方法因为 / 是一个合法的虚拟主机名称而且符合常规的命名约定。 请记住在配置虚拟主机名称时最好遵循标准的命名约定避免使用特殊字符或保留字以确保系统能够正确解析和处理。 然后在publisher服务中编写测试类SpringAmqpTest并利用RabbitTemplate实现消息发送
package cn.itcast.mq.helloworld;import org.junit.jupiter.api.Test;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.messaging.Message;SpringBootTest
public class SpringAMQPTest {Autowiredprivate RabbitTemplate rabbitTemplate;Testvoid testSendMessage(){String queueName simple.queue;String message hello,基本消息类型;rabbitTemplate.convertAndSend(queueName, message);}
}
查看控制台可以看到收到消息了 代码解析
Autowired 是 Spring 框架提供的注解用于自动装配依赖注入对象。通过在需要使用的地方添加 Autowired 注解Spring 将会根据类型或名称来自动查找相应的 Bean 对象并将其注入到目标对象中。
rabbitTemplate.convertAndSend(queueName, message) 是 Spring AMQP 提供的方法用于将消息发送到指定的 RabbitMQ 队列中。它需要传递两个参数queueName 表示目标队列的名称message 表示要发送的消息内容。
Autowired
private RabbitTemplate rabbitTemplate;public void sendMessage(String queueName, String message) {rabbitTemplate.convertAndSend(queueName, message);
}
总结起来Autowired 是用于自动装配对象的注解而 rabbitTemplate.convertAndSend(queueName, message) 是用于发送消息到 RabbitMQ 的方法。通过结合使用它们你可以方便地将消息发送到指定的队列中。 3.编写消费者代码
首先在消费者的yml文件也要配置好相关代码
然后创建一个类 package cn.itcast.mq.lintener;import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;Slf4j
Component
public class MQListener {RabbitListener(queues simple.queue)public void listenSimpleQueue(String message){System.out.println(消费者收到了消息: message);}
}代码解析 RabbitListener(queues simple.queue) 是 Spring AMQP 中用于声明消息监听器的注解。通过使用这个注解你可以指定要监听的 RabbitMQ 队列名称以便在消息到达该队列时执行相应的消息处理逻辑。具体来说RabbitListener 注解标记在一个方法上表示这个方法是一个 RabbitMQ 消息监听器。当监听的队列中有消息到达时Spring 将自动调用被注解的方法并将消息内容作为参数传递给这个方法。 在你提供的例子中RabbitListener(queues simple.queue) 表示将一个方法标记为监听名为 simple.queue 的 RabbitMQ 队列的消息。当这个队列中有消息到达时被注解的方法就会被触发并处理接收到的消息内容。