怎么进行spring boot rabbitMQ RPC实现
发表于:2025-02-08 作者:千家信息网编辑
千家信息网最后更新 2025年02月08日,今天就跟大家聊聊有关怎么进行spring boot rabbitMQ RPC实现,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。环境配置pack
千家信息网最后更新 2025年02月08日怎么进行spring boot rabbitMQ RPC实现
今天就跟大家聊聊有关怎么进行spring boot rabbitMQ RPC实现,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
环境配置
package com.example.demo;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.amqp.rabbit.annotation.EnableRabbit;import org.springframework.amqp.rabbit.connection.ConnectionFactory;import org.springframework.amqp.rabbit.core.RabbitTemplate;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.beans.factory.config.ConfigurableBeanFactory;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Scope;@Configuration@EnableRabbitpublic class RabbitMQConfigurer { @Autowired private ConnectionFactory connectionFactory; @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) public RabbitTemplate rabbitTemplate() { //必须是prototype类型 //Reply received after timeout RabbitTemplate rabbitTemplate = new RabbitTemplate(this.connectionFactory); rabbitTemplate.setReceiveTimeout(9000); return rabbitTemplate; } @Bean @Qualifier("rpcTestExchange") public DirectExchange rpcTestExchange() { return new DirectExchange("rpcTest"); } @Bean public Queue rpcTestQueue() { return new Queue("rpcTestQueue"); } @Bean public Binding rpcTestBind() { return BindingBuilder.bind(rpcTestQueue()).to(rpcTestExchange()).with("addUser"); }}
server 端
package com.example.demo;import com.rabbitmq.client.Channel;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.amqp.rabbit.annotation.RabbitHandler;import org.springframework.amqp.rabbit.annotation.RabbitListener;import org.springframework.amqp.rabbit.core.RabbitTemplate;import org.springframework.amqp.support.AmqpHeaders;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.messaging.handler.annotation.Header;import org.springframework.messaging.handler.annotation.Payload;import org.springframework.stereotype.Component;@Component@RabbitListener(queues = "rpcTestQueue")public class UserServer { private static final Logger LOGGER = LoggerFactory.getLogger(UserServer.class); private final RabbitTemplate rabbitTemplate; @Autowired public UserServer(RabbitTemplate rabbitTemplate) { this.rabbitTemplate = rabbitTemplate; } @RabbitHandler public void process(@Payload String payload, Channel channel, @Header(AmqpHeaders.REPLY_TO) String replyTo, @Header(AmqpHeaders.CORRELATION_ID) String correlationId) throws Exception { LOGGER.info("====== server receive data 【{}】 ====== ", payload); this.rabbitTemplate.convertAndSend(replyTo, "then " + payload + " is create", message -> { message.getMessageProperties().setCorrelationId(correlationId); return message; }); LOGGER.info("====== server response queue 【{}】 ======", replyTo); }}
client 端
package com.example.demo;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.amqp.rabbit.core.RabbitTemplate;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import java.util.Arrays;@Componentpublic class Client { private static final Logger LOGGER = LoggerFactory.getLogger(Client.class); private final RabbitTemplate rabbitTemplate; @Autowired public Client(RabbitTemplate rabbitTemplate) { this.rabbitTemplate = rabbitTemplate; } public void doRequest() { for (String name : Arrays.asList("张三", "李四", "王五")) { LOGGER.info("---- client send user name is 【{}】", name); Object response = this.rabbitTemplate.convertSendAndReceive("rpcTest", "addUser", name); LOGGER.info("---- and response is : {} -------", response); } }}
客户端:
在请求发送消息之前,创建一个【匿名队列】绑定至默认的交换机(即 /)。将队【匿名队列】名称放在 reply_to 中与消息一起发送。
服务端:
处理理消息后,将应答消息发送至默认交换机即(/)。
看完上述内容,你们对怎么进行spring boot rabbitMQ RPC实现有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
消息
内容
交换机
队列
名称
客户
客户端
更多
环境
知识
篇文章
类型
行业
资讯
资讯频道
频道
张三
李四
王五
进一
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
ibm x m4服务器
表情识别数据库有哪些
组织开展网络安全宣传
软件开发有必要学好吗
迪哥我的世界粉丝服务器
centos扫描服务器开放端口
山东省网络安全选拔
自己搭一个服务器需要多少钱
北京软件开发最高工资多少
银符数据库推介
ip网络技术基础双语
如何查邮箱服务器
太极下载模块服务器请求失败
中国国安网络安全审查
拓达网络技术是真的嘛
计算机网络技术专业职务
有什么软件可以检测网络安全
特种装备网络安全
中国国家网络安全宣传标语
用友软件数据库安装
刑法网络安全罪
细化数据库未完善信息
服务器配置部署
打服务器套路视频教程
火山电音服务器
西城区新时代软件开发服务价钱
目前影响网络安全的因素
诺克萨斯服务器进不去怎么办
武汉传说网络技术有限公司
印尼 网络安全局