当前位置: 首页 > wzjs >正文

网站开发的调研内容网站欢迎页面 特效

网站开发的调研内容,网站欢迎页面 特效,宁化县建设局网站,网站优化的优势概述 RabbitTemplate 是 Spring AMQP(Advanced Message Queuing Protocol)提供的核心类之一,它是 AmqpTemplate 接口的主要实现,用于与 RabbitMQ 交互。 它封装了消息的生产和消费逻辑,使得开发者可以更方便地与 Rabb…

概述

RabbitTemplate 是 Spring AMQP(Advanced Message Queuing Protocol)提供的核心类之一,它是 AmqpTemplate 接口的主要实现,用于与 RabbitMQ 交互。
它封装了消息的生产和消费逻辑,使得开发者可以更方便地与 RabbitMQ 进行通信。


一、RabbitTemplate 主要功能

  • 发送消息到指定的交换机和队列
  • 从队列中接收消息
  • 发送并接收消息,实现 RPC(远程过程调用)
  • 支持事务管理
  • 提供消息转换器,支持 JSON、Java 序列化等格式
  • 处理消息确认、失败回调等

二、RabbitTemplate 常用方法

1. 消息发送

void convertAndSend(String exchange, String routingKey, Object message);
void convertAndSend(String exchange, String routingKey, Object message, MessagePostProcessor messagePostProcessor);
void convertAndSend(String routingKey, Object message);
void convertAndSend(String routingKey, Object message, MessagePostProcessor messagePostProcessor);
  • 参数说明

    • exchange:交换机名称
    • routingKey:路由键
    • message:要发送的消息(可以是 StringMap对象 等)
    • messagePostProcessor:消息后处理器,可用于修改消息的属性
  • 示例

rabbitTemplate.convertAndSend("my-exchange", "my-routing-key", "Hello RabbitMQ!");

2. 消息接收

Object receiveAndConvert(String queueName);
Message receive(String queueName);
  • 参数说明

    • queueName:队列名称
  • 返回值

    • receiveAndConvert:自动将消息转换为 Java 对象
    • receive:返回原始 Message 对象,包含 bodyproperties
  • 示例

String message = (String) rabbitTemplate.receiveAndConvert("my-queue");
System.out.println("接收到消息:" + message);

3. 发送并接收消息(RPC 模式)

Object convertSendAndReceive(String exchange, String routingKey, Object message);
  • 应用场景

    • 客户端发送消息到 exchange
    • 服务器处理后返回响应
    • 客户端接收处理结果
  • 示例

String response = (String) rabbitTemplate.convertSendAndReceive("my-exchange", "my-routing-key", "Hello");
System.out.println("收到的响应:" + response);

4. 设置消息确认回调

  • 配置 ConfirmCallback 确认消息是否到达交换机
rabbitTemplate.setConfirmCallback((correlationData, ack, cause) -> {if (ack) {System.out.println("消息成功到达交换机");} else {System.out.println("消息未到达交换机,原因:" + cause);}
});
  • 配置 ReturnCallback 确认消息是否到达队列
rabbitTemplate.setMandatory(true); // 必须设置为 true,否则 returnCallback 不生效
rabbitTemplate.setReturnsCallback(returned -> {System.out.println("消息未到达队列:" + returned.getReplyText());
});

5. 事务管理

  • 开启事务:
rabbitTemplate.setChannelTransacted(true);
  • 事务提交:
rabbitTemplate.convertAndSend("exchange", "key", "message");
rabbitTemplate.execute(channel -> {channel.txCommit();return null;
});
  • 事务回滚:
rabbitTemplate.execute(channel -> {channel.txRollback();return null;
});

三、应用场景

  1. 简单的生产者-消费者模型

    • RabbitTemplate 用于发送消息到队列,消费者监听队列处理消息。
  2. 发布/订阅模式

    • RabbitTemplate 发送消息到 fanout 交换机,多个队列接收相同的消息。
  3. RPC 远程调用

    • 发送请求消息到队列,并等待响应结果。
  4. 事务管理

    • 确保消息在 RabbitMQ 处理时的可靠性。

四、完整示例代码

1. 生产者

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Service;@Service
public class RabbitMqProducer {private final RabbitTemplate rabbitTemplate;public RabbitMqProducer(RabbitTemplate rabbitTemplate) {this.rabbitTemplate = rabbitTemplate;}public void sendMessage(String message) {rabbitTemplate.convertAndSend("my-exchange", "my-routing-key", message);System.out.println("发送消息:" + message);}
}

2. 消费者

import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Service;@Service
public class RabbitMqConsumer {@RabbitListener(queues = "my-queue")public void receiveMessage(String message) {System.out.println("收到消息:" + message);}
}

3. 配置类

import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class RabbitMqConfig {@Beanpublic Exchange exchange() {return new DirectExchange("my-exchange");}@Beanpublic Queue queue() {return new Queue("my-queue");}@Beanpublic Binding binding(Queue queue, Exchange exchange) {return BindingBuilder.bind(queue).to(exchange).with("my-routing-key").noargs();}
}

五、总结

方法作用
convertAndSend()发送消息
receiveAndConvert()接收并转换消息
receive()仅接收消息(不转换)
convertSendAndReceive()发送消息并等待响应
setConfirmCallback()监听消息是否到达交换机
setReturnsCallback()监听消息是否到达队列
setChannelTransacted(true)开启事务支持

RabbitTemplate 适用于大多数 RabbitMQ 操作,结合 Spring Boot 配置可以大大简化开发。


文章转载自:

http://5SjG801r.rqjxc.cn
http://NfsRZaz2.rqjxc.cn
http://ycpolz2K.rqjxc.cn
http://2GBbmw1f.rqjxc.cn
http://LVdNQkhY.rqjxc.cn
http://X6ofgrkC.rqjxc.cn
http://ympvlnBS.rqjxc.cn
http://5aWoqkee.rqjxc.cn
http://7DqLT9ru.rqjxc.cn
http://cs8qv4QO.rqjxc.cn
http://VTHtqfK6.rqjxc.cn
http://LXnqoluD.rqjxc.cn
http://cAhjWgh7.rqjxc.cn
http://kt9nRNRt.rqjxc.cn
http://2t1oEC3p.rqjxc.cn
http://1fhOhGtP.rqjxc.cn
http://DuRbE5ci.rqjxc.cn
http://MGX6espv.rqjxc.cn
http://Llj4Tav6.rqjxc.cn
http://rBGd5iBU.rqjxc.cn
http://OPZeELov.rqjxc.cn
http://d0jAemln.rqjxc.cn
http://dK9Dto9g.rqjxc.cn
http://Dj9Jlftm.rqjxc.cn
http://eBCJcXIy.rqjxc.cn
http://NLuYTxP7.rqjxc.cn
http://hFAme1Lp.rqjxc.cn
http://w0nLGYsr.rqjxc.cn
http://2InXGWjV.rqjxc.cn
http://O2L2f9YI.rqjxc.cn
http://www.dtcms.com/wzjs/623626.html

相关文章:

  • 泸州网站开发公司wordpress+4.0+简体中文
  • 企业做网站的优势百度关键词优化多少钱一年
  • 达内网站开发学习培训常州模板网站建设
  • 兰州百度公司网站建设重庆合川企业网站建设联系电话
  • 网站如何做微信支付宝支付wordpress类目权限
  • 整站优化要多少钱深圳网站建设选哪家
  • 做网站开发的方案职业生涯规划ppt免费模板
  • 永州做网站公司做外贸网站市场
  • 威海城乡建设局网站首页导购网站模板
  • 做网站 所需资源wordpress禁止s.w.org
  • 临海网站建设公司西安最新数据消息
  • 赞叹天河网站建设公司河南省建设厅代建中心
  • 网站建设培训会讲话wordpress怎么分享到微信
  • 长春网站优化流程济南软件外包
  • 北京网站优化服务有限公司为什么做网站必须要用域名
  • 网站不备案不能用吗建设网银官网
  • jsp电商网站开发流程图荆门住房建设厅网站
  • 亚马逊的网站建设企业的网络推广
  • html可以做网站吗怎样宣传一个网站
  • 网站换行代码网页版qq音乐在线登录
  • 网站建设包含seo吗如何搭建公司网络
  • 湖北企业网站建设公司今天军事新闻最新消息视频
  • 无锡做网站公司多少钱呼和浩特网站建设
  • 法律顾问 网站 源码黑龙江省关于城市建设政策网站
  • 那种漂亮的网站怎么做设计师需要学历吗
  • 网站流量查询工具网页游戏奥奇传说
  • 长沙网页制作模板的网站wordpress 分类 id
  • 提供网站建设找哪家公司好wordpress多个博客
  • 标签化网站二级域名购买平台
  • 网站开发体会如何做网站建设团队建设