文章目录
前言
mq 用的很少,简单记录一下。
需求:数据提供方采用mq的方式推送数据,我方接收数据后,入库。
一、pom
xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
二、配置
java
spring.rabbitmq.host=
spring.rabbitmq.port=
spring.rabbitmq.username=
spring.rabbitmq.password=
spring.rabbitmq.publisher-returns=true
spring.rabbitmq.virtual-host=virtual
spring.rabbitmq.listener.simple.acknowledge-mode=manual
spring.rabbitmq.listener.simple.concurrency=1
spring.rabbitmq.listener.simple.max-concurrency=1
spring.rabbitmq.listener.simple.retry.enabled=true
- spring.rabbitmq.host=
描述:指定 RabbitMQ 服务器的主机名或 IP 地址。通常是 localhost 或者服务器的远程地址。 - spring.rabbitmq.port=
描述:指定 RabbitMQ 服务器的端口号。默认情况下,RabbitMQ 使用 5672 端口。 - spring.rabbitmq.username=
描述:用于连接 RabbitMQ 的用户名。RabbitMQ 需要进行身份验证,因此需要提供有效的用户名。 - spring.rabbitmq.password=
描述:用于连接 RabbitMQ 的密码。与用户名配合使用进行身份验证。 - spring.rabbitmq.publisher-returns=true
描述:启用消息发布确认。如果设置为 true,当发布的消息无法路由到任何队列时,将触发回调。适用于需要确保消息已正确发送的场景。 - spring.rabbitmq.virtual-host=virtual
描述:指定 RabbitMQ 的虚拟主机。虚拟主机用于逻辑上的隔离,可以在同一个 RabbitMQ 实例中创建多个虚拟主机,每个虚拟主机
三、RabbitMQListener
java
@Component
@Slf4j
@RabbitListener(queues = "test")
public class RabbitMQListener {
@RabbitHandler
public void onMessage(HashMap<String, Object> baseMap, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag) {
try {
String messageType = (String) baseMap.get("messageType");
log.info(messageType);
// 业务同步
// 确认已经成功处理的消息,确保 RabbitMQ 从队列中将其移除,以避免重复消费
channel.basicAck(deliveryTag, false);
} catch (Exception e) {
log.info("接收消息失败,重新放回队列");
try {
// 否认消息并重新入队
channel.basicNack(deliveryTag, false, true);
} catch (IOException ie) {
ie.printStackTrace();
}
}
}
}
总结
- 判断mq是否可以联通
telnet ip port