生成端发消息

package com.bfxy.rabbitmq.api.delay; import java.io.IOException; import java.util.HashMap; import java.util.Map; import com.rabbitmq.client.AMQP; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.ReturnListener; public class Producer4Delay { public static void main(String[] args) throws Exception { ConnectionFactory connectionFactory = new ConnectionFactory() ; //RabbitMQ-Server安装在本机,所以直接用127.0.0.1 connectionFactory.setHost("192.168.11.76"); connectionFactory.setPort(5672); Connection connection = connectionFactory.newConnection(); //创建一个渠道 Channel channel = connection.createChannel() ; //5 监听 channel.addReturnListener(new ReturnListener() { public void handleReturn(int replyCode, String replyText, String exchange, String routingKey, AMQP.BasicProperties properties, byte[] body) throws IOException { System.out.println("**************handleReturn**********"); System.out.println("replyCode: " + replyCode); System.out.println("replyText: " + replyText); System.out.println("exchange: " + exchange); System.out.println("routingKey: " + routingKey); System.err.println("properties:x-delay: " + properties.getHeaders().get("x-delay")); System.out.println("body: " + new String(body)); } }); Map<String, Object> headers2 = new HashMap<String, Object>(); headers2.put("x-delay", 5000L); AMQP.BasicProperties.Builder props2 = new AMQP.BasicProperties.Builder().headers(headers2); channel.basicPublish("delay.exchange", "delay.1111", true, props2.build(), "hello two".getBytes()); // channel.close(); // connection.close(); } }
消费端

package com.bfxy.rabbitmq.api.delay; import java.util.HashMap; import java.util.Map; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.QueueingConsumer; import com.rabbitmq.client.QueueingConsumer.Delivery; /** * <B>中文类名:</B>Consumer4Delay<BR> * <B>概要说明:</B><BR> * @author bhz(Alienware) * @since 2016年7月6日 */ public class Consumer4Delay { public static void main(String[] args) throws Exception { ConnectionFactory connectionFactory = new ConnectionFactory() ; connectionFactory.setHost("192.168.11.76"); connectionFactory.setPort(5672); connectionFactory.setAutomaticRecoveryEnabled(true); Connection connection = connectionFactory.newConnection(); Channel channel = connection.createChannel() ; //延迟队列 Map<String, Object> map = new HashMap<String, Object>(); map.put("x-delayed-type", "topic"); channel.exchangeDeclare("delay.exchange", "x-delayed-message", true, false, map); channel.queueDeclare("delay.queue", true, false, false, null); channel.queueBind("delay.queue", "delay.exchange", "delay.#"); QueueingConsumer consumer = new QueueingConsumer(channel) ; channel.basicConsume("delay.queue", false, consumer) ; System.out.println("---------consume queue---------"); while(true){ Delivery delivery = consumer.nextDelivery() ; String msg = new String(delivery.getBody()) ; try { System.out.println("received: " + msg); channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false); } catch (Exception e) { e.printStackTrace(); } } } }
分类:
分布式消息队列(MQ)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理