【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("消息已经成功发送");
   //进行其他业务处理
   
}
相关推荐
开源之眼1 小时前
《github star 加星 Taimili.com 艾米莉 》为什么Java里面,Service 层不直接返回 Result 对象?
java·后端·github
Maori3162 小时前
放弃 SDKMAN!在 Garuda Linux + Fish 环境下的优雅 Java 管理指南
java
用户908324602733 小时前
Spring AI 1.1.2 + Neo4j:用知识图谱增强 RAG 检索(上篇:图谱构建)
java·spring boot
小王和八蛋3 小时前
DecimalFormat 与 BigDecimal
java·后端
beata3 小时前
Java基础-16:Java内置锁的四种状态及其转换机制详解-从无锁到重量级锁的进化与优化指南
java·后端
IT探险家3 小时前
你的第一个 Java 程序就翻车?HelloWorld 的 8 个隐藏陷阱
java
随风飘的云3 小时前
SpringBoot 的自动配置原理
java
SimonKing3 小时前
觅得又一款轻量级数据库管理工具:GoNavi
java·后端·程序员
Seven974 小时前
BIO详解:解锁阻塞IO的使用方式
java
oak隔壁找我14 小时前
JVM常用调优参数
java·后端