java操作rabbitmq收发消息

发布时间:2026/10/19 9:55:02

java操作rabbitmq收发消息 //生产者 //配置 !-- 引入rabbitmq-- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-amqp/artifactId /dependency spring: rabbitmq: host: 192.168.200.129 port: 5672 username: guest password: guest # 开启发送端确认 publisher-confirm-type: correlated # 开启发送到队列确认 publisher-returns: true # 异步回调 template: mandatory: true Configuration public class RabbitMQConfig { //使用Jackson转换消息格式为JSON便于调试和传输复杂对象。 Bean public MessageConverter messageConverter() { return new Jackson2JsonMessageConverter(); // } //初始化rabbitmq PostConstruct public void initRabbitTemplate() { //confirm message是否正确发送到交换机 rabbitTemplate.setConfirmCallback(new RabbitTemplate.ConfirmCallback() { /** * 确认消息是否正确发送到交换机 * param correlationData 消息的唯一标识 * param ack 消息是否正确发送到交换机 * param cause 错误信息 */ Override public void confirm(CorrelationData correlationData, boolean ack, String cause) { System.out.println(confirm...correlationData[correlationData]ack[ack]cause[cause]); } }); rabbitTemplate.setMandatory(true); //消息从exchange发送到queue失败返回处理 rabbitTemplate.setReturnCallback(new RabbitTemplate.ReturnCallback() { /** * 消息发送失败返回处理 * param message 消息 * param replayCode 错误码 * param replyText 错误信息 * param exchange 交换机 * param routingkey 路由键 */ Override public void returnedMessage(Message message, int replayCode, String replyText, String exchange, String routingkey) { System.out.println(returnedMessage...message[message]replayCode[replayCode]replyText[replyText]exchange[exchange]routingkey[routingkey]); } }); }} //发送消息 rabbitTemplate.convertAndSend(order-event-exchange,order.seckill.order,seckillOrderTo);//消费者 !-- 引入rabbitmq-- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-amqp/artifactId /dependency //配置 spring: rabbitmq: host: 192.168.200.129 port: 5672 username: guest password: guest # 手动确认收到信息 listener: simple: acknowledge-mode: manualConfiguration public class RabbitMQConfig {Bean public MessageConverter messageConverter() { return new Jackson2JsonMessageConverter(); }/** * sec kill queue */ Bean public Queue orderSecKillQueue() { return new Queue(order.seckill.queue, true, false, false); } /** * sec kill binding */ Bean public Binding orderSecKillQueueBinding() { return new Binding(order.seckill.queue, Binding.DestinationType.QUEUE, order-event-exchange, order.seckill.order, null); }} //接收message Slf4j RabbitListener(queues order.seckill.queue) Component public class OrderSeckillListener { Autowired private OrderSeckillService orderSeckillService; RabbitHandler public void listener(SeckillOrderTo to, Channel channel, Message message) { log.info(收到秒杀订单信息{}, to); try { orderSeckillService.createSeckillOrder(to); channel.basicAck(message.getMessageProperties().getDeliveryTag(),false); } catch (Exception e) { throw new RuntimeException(e); } } }
延伸阅读

更多相关文章

2026/10/16 7:10:19

ClaudeCode深度解析:面向中高级工程师的代码认知增强系统

1. 这不是又一个“AI编程神器”的营销话术,而是我用它重写了三个生产级服务后的实话ClaudeCode——注意,不是Claude,也不是CodeLlama,更不是GitHub Copilot——是Anthropic在2024年中低调释放的一套面向代码场景深度优化的推理引擎…

2026/10/18 16:00:37

STM32F439ZG与L9958电机控制方案设计与实现

1. 项目概述:L9958与STM32F439ZG的电机控制方案在工业自动化和机器人领域,电机控制系统的性能直接决定了设备的动态响应和运动精度。L9958作为意法半导体(ST)推出的专用电机驱动芯片,与STM32F439ZG高性能MCU的组合,为开发者提供了…

2026/10/19 9:51:14

开源代码审查方案实战:基于GitLab CI与Reviewdog的自动化质量门禁

项目标题: "open-code-review"慢。先把话说清楚。我这边说的open-code-review,是我自己在团队内部牵头做的一套开源代码审查方案,不是某个商业平台的神秘内测项目,也不是某篇论文里的理想流程。它就是一套把代码审查从“口头提一嘴…

2026/10/19 9:51:14

库卡机器人对接商科焊机:Profinet配置与GSD文件导入全流程

简介:这份课程资源面向工业自动化工程师、机器人调试人员及焊接自动化学习者,聚焦库卡机器人与商科焊机之间基于Profinet的通信配置,解决设备互联、GSD文件导入与焊接参数协同等实际问题。资源包共4个文件,压缩后约3.51MB&#xf…

2026/10/19 9:51:14

Win32 GDI AlphaBlend像素级透明混合实战指南

简介:本资源是一份面向Windows桌面开发初学者与中级C程序员的AlphaBlend半透明绘制实战源码包,聚焦图形界面中位图透明叠加这一典型视觉效果实现。资源完整演示了如何通过Windows GDI API调用AlphaBlend函数,结合32位带Alpha通道位图、BLENDF…

2026/10/19 9:51:14

Win32 AlphaBlend半透明绘制实战指南:解决发灰、锯齿与卡顿

简介:本资源是一份面向Windows图形编程初学者与中级开发者的Alpha混合技术实践源码包,聚焦于使用Win32 API中的AlphaBlend函数实现位图半透明绘制,解决GUI界面中图像叠加、视觉融合等典型需求。压缩包共15个文件,含4个带Alpha通道…

2026/10/19 9:46:13

Python列表与字典的底层逻辑、复杂度对比与选型指南

写了这么多年Python,回头看看每天写在代码里的东西,出现频率最高的不是复杂的算法,也不是花哨的设计模式,而是最朴素的列表和字典。作为Python数据容器中的两大支柱,列表负责"按顺序装东西",字典…

2026/10/18 0:01:50

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/19 0:04:56

悟空开源无代码平台实战:从实体建模到应用设计避坑指南

简介:基于悟空开源无代码平台的多种应用设计源码,面向希望在不编写代码的情况下快速搭建CRM、HRM、财务系统、ERP、SRM等业务应用的企业与技术人员,通过拖放式界面和内置模板即可完成应用定制与部署。压缩包共697个文件,约10.74MB…

2026/10/19 0:04:56

基于.NET9的多租户权限系统:数据权限与动态API落地实践

简介:这份资源是一套面向 .NET 与 Vue 全栈开发者的中台权限管理系统,后端基于 .Net9,前端采用 Vue3 Element Plus,并配套 uniapp uviewui 移动端方案,实现前后端分离。系统覆盖多租户隔离、数据权限、动态 Api、任务…

2026/10/19 0:04:56

场地预约小程序毕设实战:SSM+微信小程序+MySQL数据库设计到避坑

简介:面向毕业设计场景的场地预约小程序完整项目,基于微信小程序SSMMySql技术栈开发,适合计算机相关专业学生作为选题参考、功能扩展或二次开发起点。系统实现场地类型管理、场地管理、预约管理、取消申请与押金退回等功能,分为管…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑