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

动易学校网站管理系统 下载天长做网站公司

动易学校网站管理系统 下载,天长做网站公司,获取网站访客qq号码程序下载,传统网站和手机网站的区别案例场景:用户下单后需要多个微服务(如营销、会员)分别订阅并处理订单事件,且每个微服务可能有多个集群实例,需要保证同一个微服务的集群中,只有一个实例消费到消息。 不同于Kafka和rocketMQ有分组消费的功…

        案例场景:用户下单后需要多个微服务(如营销、会员)分别订阅并处理订单事件,且每个微服务可能有多个集群实例,需要保证同一个微服务的集群中,只有一个实例消费到消息。

        不同于Kafka和rocketMQ有分组消费的功能,rabbitMQ需要通过topic Exchange实现。

        1、消息设计

{"event_type": "order_created",  // 事件类型(如下单、支付成功)"order_id": "123456","user_id": "user_789","items": [{"product_id": "p1001", "quantity": 2},{"product_id": "p1002", "quantity": 1}],"total_amount": 399.00,"created_at": "2025-07-01T12:00:00Z"
}

        2、rabbitMQ设计

        使用 topic 类型的 Exchange:支持灵活的路由规则,不同微服务可通过 binding key 订阅特定事件。
        Exchange 名称示例:order_events。

微服务	    队列名	            绑定键(binding key)
营销系统	    marketing_queue	    order.created.marketing
会员系统	    member_queue	    order.created.member绑定键规则:<event_type>.<microservice_name>,便于后续扩展(如 order.cancel.marketing)。

        3、消息发布

        生产者(订单服务)发布消息时,指定路由键(routing key) 为 order.created

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.fasterxml.jackson.databind.ObjectMapper;public class OrderProducer {private static final String EXCHANGE_NAME = "order_events";private static final String ROUTING_KEY = "order.created";public static void main(String[] args) throws Exception {// 1. 创建连接ConnectionFactory factory = new ConnectionFactory();factory.setHost("localhost");factory.setUsername("guest");factory.setPassword("guest");try (Connection connection = factory.newConnection();Channel channel = connection.createChannel()) {// 2. topic Exchangechannel.exchangeDeclare(EXCHANGE_NAME, "topic", true);// 3. 构造消息OrderEvent event = new OrderEvent();event.setEvent_type("order_created");event.setOrder_id("123456");event.setUser_id("user_789");event.setItems(List.of(Map.of("product_id", "p1001", "quantity", 2)));event.setTotal_amount(399.00);event.setCreated_at("2025-07-02T22:00:00Z");ObjectMapper mapper = new ObjectMapper();String messageJson = mapper.writeValueAsString(event);// 4. 发布消息channel.basicPublish(EXCHANGE_NAME,ROUTING_KEY,true, // 持久化消息new AMQP.BasicProperties.Builder().deliveryMode(2) // 持久化.build(),messageJson.getBytes());System.out.println("Sent order event: " + messageJson);}}
}

        4、消息订阅(营销服务)

        不同服务只需要修改 QUEUE_NAME 和 BINDING_KEY 就可以了。 

import com.rabbitmq.client.*;
import com.fasterxml.jackson.databind.ObjectMapper;public class MarketingConsumer {private static final String QUEUE_NAME = "marketing_queue";private static final String BINDING_KEY = "order.created.marketing";public static void main(String[] args) throws Exception {ConnectionFactory factory = new ConnectionFactory();factory.setHost("localhost");factory.setUsername("guest");factory.setPassword("guest");Connection connection = factory.newConnection();Channel channel = connection.createChannel();// 1. 声明队列并绑定到 Exchangechannel.queueDeclare(QUEUE_NAME, true, false, false, null);channel.queueBind(QUEUE_NAME, "order_events", BINDING_KEY);// 2. 消费者回调DeliverCallback deliverCallback = (consumerTag, delivery) -> {String messageJson = new String(delivery.getBody(), "UTF-8");ObjectMapper mapper = new ObjectMapper();OrderEvent event = mapper.readValue(messageJson, OrderEvent.class);// 3. 业务逻辑:发送营销短信System.out.println("Marketing: Sending SMS for order " + event.getOrder_id());// 4. 手动确认消息channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);};// 5. 设置手动确认channel.basicConsume(QUEUE_NAME, false, deliverCallback, consumerTag -> {});}
}

http://www.dtcms.com/wzjs/815417.html

相关文章:

  • 金华 网站建设360搜索的网站收录入口
  • 茂名专业网站建设代人做网站
  • 电子商务网站详细设计异常网站服务器失去响应
  • php+mysql网站开发全程实例 于荷云 pdf虚拟主机与云服务器的区别
  • 北京城乡建设部网站扬中门户
  • 更改网站文章上传时间电子邮箱
  • 从化做网站广告公司简介范文
  • 做调查网站的问卷哪个给的钱高杭州全网推广
  • 宁国网站建设|网站建设报价 - 新支点网站建设asp网站设置
  • 珠海建站网站google网站登陆模板
  • dede如何生成网站源码wordpress怎么添加搜索框
  • 中国建设银行网站解绑手机要建一个优惠卷网站怎么做
  • 网站内部流程wordpress怎么挂广告
  • 怎么让自己的网站通过域名访问不了响应的网站
  • 在百度上怎么建网站免费空间自带域名
  • 淘宝客怎么建网站商业网站源码免费下载
  • 东莞市建设网站首页黑龙江省公开招标信息网
  • 商务互联 网站南宁网络公司
  • 免费做网站收录的怎么制作软件app流程
  • 网站维护产品推介基础建设包括哪些内容
  • 自己做的网站图片加载过慢网站建设和app哪个好
  • 微网站对比答题网站开发
  • 做js题目的网站做磁力搜索网站好吗
  • 电商网站楼层 设计建设的网站别人登录密码
  • 企业网站建设能开广告服务费吗特色专业建设展示网站 湖北
  • 广州市品牌网站建设平台深圳制作网站专业
  • 做公司+网站建设价格月夜直播免费完整版下载
  • 东莞营销型手机网站建设设计需要的软件
  • 自己做网站能挣钱吗专业上海网站建设公司哪家好
  • 做外贸一般在什么网站网站防红链接怎么做