springboot | Rabbitmq 实现RPC方式 远程同步调用

Posted 洛阳泰山

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot | Rabbitmq 实现RPC方式 远程同步调用相关的知识,希望对你有一定的参考价值。

上篇相关文章 Springboot项目整合Rabbitmq详细教程

服务端代码示例

    @Resource
    private RabbitTemplate rabbitTemplate;


    /**
     *  同步	对外发送消息的方法
     * @param msg	具体的消息内容
     * @throws Exception
     */
    public String syncSend(String msg) 
        MessageProperties messageProperties=new MessageProperties();
        Message message=new Message(msg.getBytes(StandardCharsets.UTF_8),messageProperties);
        String uuid = UUID.randomUUID().toString();
        CorrelationData data = new CorrelationData(uuid);
        log.info("【发送的消息-社会信用代码】:" + msg);
         Object result=rabbitTemplate.convertSendAndReceive("data_exchange","data_queue", message,data);
        log.info("【同步消息返回结果-msgResult】:",result);
        return result.toString();

    

消费端代码示例


    @RabbitListener(queues ="data_queue")
    public String gis2dMessage(Message message,Channel channel)
        ackOrReject(message,channel,true);
        return "测试啊啊";
    

    private void ackOrReject(Message message, Channel channel, boolean result)  
        try 
            if (result) 
                channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
             else 
                channel.basicReject(message.getMessageProperties().getDeliveryTag(), false);
            
        catch (IOException e)
            new IOException();
        
    

yml配置 reply-to 默认等待时间为5s,若是消费者处理时间太长,添加下面配置

spring:
  rabbitmq:
    host: 127.0.0.1
    port: 5672
    username: leaniot
    password: leaniot
    virtual-host: /3d_gis
    template:
      reply-timeout: 10000

测试结果

 觉得不错,记得点赞支持!!!

以上是关于springboot | Rabbitmq 实现RPC方式 远程同步调用的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot+RabbitMQ 实现 RPC 调用

RabbitMQ03_Springboot整合RabbitMQ实现发布与订阅模式路由模式通配符模式

RabbitMQ03_Springboot整合RabbitMQ实现发布与订阅模式路由模式通配符模式

SpringBoot RabbitMQ 延迟队列代码实现

SpringBoot 整合RabbitMq 自定义消息监听容器来实现消息批量处理

SpringBoot:实现RabbitMQ消息收发(TopicExchange模式)