使用 spring-rabbit 实现 同步调用的效果

本文介绍如何利用RabbitMQ实现同步通信效果,包括引入依赖、客户端配置、代码编写等步骤,并通过设置队列和关联请求响应实现同步反馈。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         虽然大部分情况使用mq是要实现一些异步的效果,但是有的时候有的需求缺需要使用mq来实现同步的效果,项目中使用的是rabbitMq,这里说下怎么用rabbitMq实现同步的效果。

        第一步:引入jar包

 

<dependency>
	<groupId>org.springframework.amqp</groupId>
	<artifactId>spring-rabbit</artifactId>
	<version>1.6.5.RELEASE</version>
</dependency>

        第二步:客户端的配置配置

 

 

<rabbit:connection-factory id="connectionFactory"
							   username="${rabbit.service.conn.user}"
							   password="${rabbit.service.conn.password}"
							   host="${rabbit.service.conn.host}"
							   port="${rabbit.service.conn.port}" />

<!-- reply-queue:服务端响应发送到的队列 reply-address:replyEx/routeReply -->
<rabbit:template id="amqpTemplate" connection-factory="connectionFactory" reply-queue="replyQueue"
	reply-address="${rabbit.queue.orderSettleReply}/${rabbit.rountKey.orderSettleReply}" 
	correlation-key="correlationIdString" reply-timeout="10000">
		<rabbit:reply-listener/>
	</rabbit:template>


<rabbit:queue id="replyQueue" name="${rabbit.queue.orderSettleReply}" durable="true" auto-delete="false" exclusive="false">
		
	</rabbit:queue>

            第三步:代码编写(部分客户端代码)

 

MessageProperties messageProperties = new MessageProperties();
            messageProperties.setDeliveryMode(MessageDeliveryMode.PERSISTENT);
            messageProperties.setExpiration(String.valueOf(30 * 1000));
//          correlationIdString 是自动生成的,所以客户端代码不需要做处理,服务端代码需要拿请求后,取出correlationIdString,然后通过messageProperties.setHeader("correlationIdString", correlationIdString);传回给客户端  
//	    String correlationIdString = "";
//	    messageProperties.setHeader("correlationIdString", correlationIdString);
			

	    String json = new Gson().toJson(params);
            Message message = new Message(json.getBytes(), messageProperties);
            Message resMessage = amqpTemplate.sendAndReceive(exchange, routingKey, message);
			return isSuccess(resMessage);

             通过这样的设置以及代码,客户端就能通过设置好的队列去取响应,根据设置好的correlation-key的值去关联请求响应,将相应同步反馈给对应的客户端

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值