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

rabbitmq服务端消费端实例(direct和fanout模式)

  1. 配置文件
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
/***/
public class RabbitMQConnectionUtilLocal {public static Connection getConnection() throws Exception {// 创建连接工厂ConnectionFactory factory = new ConnectionFactory();// 设置RabbitMQ主机地址factory.setHost("localhost");// 设置RabbitMQ端口factory.setPort(5672);// 设置虚拟主机、用户名和密码factory.setVirtualHost("/");factory.setUsername("guest");factory.setPassword("guest");factory.setAutomaticRecoveryEnabled(true); // 自动重连// 返回连接return factory.newConnection();}
}
  1. direct生产端

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;public class RoutingProducer {private final static String EXCHANGE_NAME = "direct_exchange";public static void main(String[] argv) throws Exception {// 获取到连接Connection connection = RabbitMQConnectionUtil.getConnection();// 从连接中创建通道Channel channel = connection.createChannel();// 声明交换器channel.exchangeDeclare(EXCHANGE_NAME, "direct");// 发送消息String message1 = "{\"flag\":0,\"idList\":[\"1\"]}";String message2 = "Info log message";String message3 = "Warning log message";channel.basicPublish(EXCHANGE_NAME, "error", null, message1.getBytes());System.out.println(" [x] Sent '" + message1 + "'");channel.basicPublish(EXCHANGE_NAME, "info", null, message2.getBytes());System.out.println(" [x] Sent '" + message2 + "'");channel.basicPublish(EXCHANGE_NAME, "warning", null, message3.getBytes());System.out.println(" [x] Sent '" + message3 + "'");// 关闭通道和连接channel.close();connection.close();}
}
  1. fanout生产端

import com.rabbitmq.client.*;
import jzy.util.RabbitMQConnectionUtil;public class FanoutExchangeExample {private static final String EXCHANGE_NAME = "20250917test1";public static void main(String[] argv) throws Exception {Connection connection = RabbitMQConnectionUtilLocal.getConnection();Channel channel = connection.createChannel();// 声明Fanout类型的交换器,第三个参数是持久化标记channel.exchangeDeclare(EXCHANGE_NAME, "fanout",true);// 创建队列并绑定到交换器String queueName = channel.queueDeclare().getQueue();channel.queueBind(queueName, EXCHANGE_NAME, "");// 发送消息String message = "This is a log message";channel.basicPublish(EXCHANGE_NAME, "", null, message.getBytes("UTF-8"));System.out.println(" [x] Sent '" + message + "'");channel.close();connection.close();}
}
  1. 消费端

package jzy.util;import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import com.rabbitmq.client.*;
import org.springframework.web.bind.annotation.RequestBody;import java.util.List;public class RabbitMQConsumer {
//    private final static String EXCHANGE_NAME = "direct_exchange";
//    private final static String QUEUE_NAME = "error_log_queue";private final static String EXCHANGE_NAME = "position_exchange";private final static String QUEUE_NAME = "LZF0101_queue";public static void main(String[] argv) throws Exception {// 获取到连接Connection connection = RabbitMQConnectionUtil.getConnection();// 从连接中创建通道Channel channel = connection.createChannel();// 声明队列channel.queueDeclare(QUEUE_NAME, false, false, false, null);// 绑定队列到交换器,并指定路由键channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, "LZF0101_topic");// 定义队列的消费者DefaultConsumer consumer = new DefaultConsumer(channel) {@Overridepublic void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws java.io.IOException {String message = new String(body, "UTF-8");JSONObject jsonObject = JsonUtil.getJsonToBean(replaceNbspWithSpace(message), JSONObject.class);try {switch (jsonObject.getStr("flag")) {default:break;}} catch (Exception e) {throw new RuntimeException(e);}System.out.println(" [x] Received  Log: '" + message + "'");}};// 监听队列channel.basicConsume(QUEUE_NAME, true, consumer);}/*** 正则过滤生产端信息特殊符号,过滤 NBSP*/public static String replaceNbspWithSpace(String str) {if (str == null) {return null;}return str.replaceAll("\\u00A0", " ");}
}
http://www.dtcms.com/a/507288.html

相关文章:

  • 橙色车队上的安全密码:嘉顺达蓝海的危险品运输专业之道
  • FPGA高频面试问题整理—附答案
  • html框架做网站创立个网站专业卖手机
  • 【设计模式】单例模式(Singleton)
  • 2025.10.18 TRAE HACKATHON WUHAN 黑客马拉松在武汉隆重举行[特殊字符]
  • php5 mysql网站开发实例精讲东莞保安公司联系电话
  • 怎么加入网站做微商城深圳广告设计与制作公司
  • App 上架 iOS 全流程指南,开发签名、IPA 上传与使用 开心上架 跨平台自动化上架实践
  • Learning Depth Estimation for Transparent and Mirror Surfaces
  • 基于知识图谱的智能会议纪要系统:从语音识别到深度理解
  • 网络通信中的POE PD详解:从核心概念到芯片选型指南
  • TensorFlow2 Python深度学习 - 生成对抗网络(GAN)实例
  • 利用jmeter完成简单的压力测试
  • 做网站用什么编程软件黄页88网能不能发免费的广告
  • 电子商务网站开发合同网页设计基础教程第二版课后答案
  • 基于Vite创建一个Vue2
  • 小皮面板的MySQL点击启动后马上又停止了
  • 【Python入门】第5篇:数据结构初探(列表、元组、字典、集合)​
  • Redis的List数据结构底层实现
  • 基于半桥结构的双极性脉冲电源的研究
  • openEuler安装mysql
  • ADC 模拟量转数字量
  • 网络广告是什么网站优化外包费用
  • 【IEEE/EI/Scopus检索】2026年第六届信息技术与云计算国际会议(ITCC 2026)
  • 赋能天然产物科学研究:多模态大模型与知识图谱的革新之旅
  • 用C语言实现原型模式时,如何确定需要深拷贝还是浅拷贝?
  • Spring Boot 3零基础教程,WEB 开发 Thymeleaf 属性优先级 行内写法 变量选择 笔记42
  • Go语言:对其语法的一些见解
  • Go Web 编程快速入门 · 04 - 请求对象 Request:头、体与查询参数
  • 伦教九江网站建设辽宁工程建筑信息网