【Rabbitmq】JAVA的Rabbitmq初步应用随记(安装完成后)

目录


前提摘要:

首先要装好rabbitmq.这里的步骤可以参考外面的文章
Rabbitmq安装

安装效果:localhost:15672有反应

加一个虚拟主机:


用guest账号添加的,那么guest账号自然就拥有zyz虚拟主机。

加一个队列

:zyz

(这里可以查看当前待处理的消息)
添加的Name是队列名字

依赖与配置文件:

依赖

复制代码
<!-- mq依赖 -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

配置文件:

java 复制代码
#RabbitMQ
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=15672
spring.rabbitmq.virtual-host=zyz
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
#设置此属性配置可以确保消息成功发送到交换器
spring.rabbitmq.publisher-confirms=true
#可以确保消息在未被队列接收时返回
spring.rabbitmq.publisher-returns=true
#手动签收
spring.rabbitmq.listener.simple.acknowledge-mode=manual
spring.rabbitmq.listener.direct.acknowledge-mode=manual

配置机与交换机:

RabbitMqConfig

java 复制代码
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;



@Configuration
public class RabbitMqConfig {

   @Bean
   public Queue queue(){
       return new Queue("bootqueue");
   }

   @Bean
   public DirectExchange directExchange(){
       return new DirectExchange("DirectExchange");
   }

   @Bean
   public Binding bindExchange(){
       return BindingBuilder.bind(queue()).to(directExchange()).with("bootqueue.key");
   }


}

发送者:

Producer

java 复制代码
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;


@Component
public class Producer implements RabbitTemplate.ReturnCallback{
   @Autowired
   RabbitTemplate rabbitTemplate;

   // 队列:boot队列   发送字符串
   public void send(String msg){
       //回调
       rabbitTemplate.setReturnCallback(this);
       rabbitTemplate.convertAndSend("DirectExchange","bootqueue.key",msg);
   }
}

接收者

Consumer

java 复制代码
import com.rabbitmq.client.Channel;


import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;

import org.springframework.stereotype.Component;


@Component
public class Consumer {

   // 队列:boot队列   接受字符串
   @RabbitListener(queues = "bootqueue")
   public void process(String msg, Channel channel, Message message){
       System.out.println("AckReciever : 收到消息"+msg);
       try{
           //Thread.sleep(5000);
           channel.basicAck(message.getMessageProperties().getDeliveryTag(),false);
           System.out.println("消息接收成功:TRUE");
       }catch (Exception e){
           System.out.println("消息接收失败:FlASE");
       }
   }
}

调用测试代码:

java 复制代码
@Resource
private Producer producer;

//异步字符串测试
@GetMapping("/produceTest")
public void produceTest(String msg) throws IOException {
   producer.send(msg);
   System.out.println("消息已经成功发送");
   //进行其他业务处理
   
}
相关推荐
清风徐来QCQ13 分钟前
八股文(1)
java·开发语言
zdl68614 分钟前
springboot集成onlyoffice(部署+开发)
java·spring boot·后端
摇滚侠18 分钟前
你是一名 java 程序员,总结定义数组的方式
java·开发语言·python
架构师沉默1 小时前
AI 让程序员更轻松了吗?
java·后端·架构
MrSYJ1 小时前
有没有人懂socketChannel中的write,read方法啊,给我讲讲
java·程序员·netty
Memory_荒年1 小时前
Spring Security + OAuth2 + JWT:三剑客合璧,打造“无懈可击”的微服务安全防线
java·后端·spring
杰克尼2 小时前
知识点总结--02(java基础部分)
java·开发语言·jvm
mldlds2 小时前
Spring Boot 实战:轻松实现文件上传与下载功能
java·数据库·spring boot
xxjj998a2 小时前
Spring Boot 整合 Apollo 配置中心实战
java·spring boot·后端
武超杰3 小时前
Spring 纯注解配置全解析(进阶版)
java·开发语言