首页 文章 精选 留言 我的

精选列表

搜索[商城系统],共10018篇文章
优秀的个人博客,低调大师

java B2B2C 源码 springmvc mybatis多租户电子商城系统- Stream重新入队(RabbitMQ)

本文将介绍RabbitMQ的binder提供的重试功能:重新入队 准备一个会消费失败的例子,可以直接沿用前文的工程,也可以新建一个,然后创建如下代码的逻辑: @EnableBinding(TestApplication.TestTopic.class) @SpringBootApplication public class TestApplication { public static void main(String[] args) { SpringApplication.run(TestApplication.class, args); } @RestController static class TestController { @Autowired private TestTopic testTopic; /** * 消息生产接口 * * @param message * @return */ @GetMapping("/sendMessage") public String messageWithMQ(@RequestParam String message) { testTopic.output().send(MessageBuilder.withPayload(message).build()); return "ok"; } } /** * 消息消费逻辑 */ @Slf4j @Component static class TestListener { private int count = 1; @StreamListener(TestTopic.INPUT) public void receive(String payload) { log.info("Received payload : " + payload + ", " + count); throw new RuntimeException("Message consumer failed!"); } } interface TestTopic { String OUTPUT = "example-topic-output"; String INPUT = "example-topic-input"; @Output(OUTPUT) MessageChannel output(); @Input(INPUT) SubscribableChannel input(); } } 内容很简单,既包含了消息的生产,也包含了消息消费。消息消费的时候主动抛出了一个异常来模拟消息的消费失败。 在启动应用之前,还要记得配置一下输入输出通道对应的物理目标(exchange或topic名)、并设置一下分组,比如: spring.cloud.stream.bindings.example-topic-input.destination=test-topic spring.cloud.stream.bindings.example-topic-input.group=stream-exception-handler spring.cloud.stream.bindings.example-topic-input.consumer.max-attempts=1 spring.cloud.stream.rabbit.bindings.example-topic-input.consumer.requeue-rejected=true spring.cloud.stream.bindings.example-topic-output.destination=test-topic 完成了上面配置之后,启动应用并访问localhost:8080/sendMessage?message=hello接口来发送一个消息到MQ中了,此时可以看到程序不断的抛出了消息消费异常。这是由于这里我们多加了一个配置:spring.cloud.stream.rabbit.bindings.example-topic-input.consumer.requeue-rejected=true。在该配置作用之下,消息消费失败之后,并不会将该消息抛弃,而是将消息重新放入队列,所以消息的消费逻辑会被重复执行,直到这条消息消费成功为止。

优秀的个人博客,低调大师

仓管不要面单要拣货单,Tigshop开源商城系统货位号打印另做一页

后台快递面单能打,仓管大姐不买账:「我要拣货单,要货位号、要备注、不要收件人电话那么大。」面单模板改不动,或者改了快递那边不认。我单独做了个拣货单打印页。不碰面单,不碰电子面单接口。 ## 拣货单要什么字段 订单号、下单时间、SKU 编码、商品名、规格、数量、货位(`warehouse_location`)、买家备注、内部备注。面单那套收件人信息缩小放底部就行。字段清单让仓管签字,别自己猜。 ## 货位从哪来 商品或 SKU 扩展字段: ```sql ALTER TABLE `product_sku` ADD COLUMN `warehouse_location` varchar(32) DEFAULT '' COMMENT '货位号'; ``` 没有 ERP 同步就先手工维护。别等 ERP 接好了再打印——仓管明天就要用。 ## 能直接粘的打印数据组装 ```php find($orderId); $lines = []; foreach ($order->items as $item) { $sku = ProductSku::find($item['sku_id']); $lines[] = [ 'sku_sn' => $sku['sku_sn'] ?? '', 'name' => $item['product_name'], 'spec' => $item['sku_name'], 'qty' => $item['quantity'], 'location' => $sku['warehouse_location'] ?? '-', ]; } return [ 'order_sn' => $order['order_sn'], 'buyer_note' => $order['buyer_note'] ?? '', 'seller_note' => $order['seller_note'] ?? '', 'lines' => $lines, ]; } } ``` ## 打印页别绑快递模板 Admin 里新路由 `/order/picking-print?id=`,HTML 表格 + `window.print()`。样式 `@media print` 单独写。面单走 SDK,拣货走浏览器打印。两码事。搅一起必炸。 ## 批量打印 勾选多个待发货订单,合并 PDF 或逐个弹窗。大促前让仓管试打 10 单。字段齐不齐、货位对不对,比代码 review 重要。齐了就上线。不齐就改字段,别改架构。 ## 和面单的分工 面单给快递,拣货单给仓管。两个按钮放一起,但模板分开。仓管误点面单浪费面单纸,误点拣货单贴不上快递。培训时说清楚。说清楚比写代码重要。真的。 ## 货位维护谁负责 初期运营手工填。后期接 WMS 同步 `warehouse_location`。同步失败就显示 `-`,别显示旧货位。旧货位害人找货。害人找货仓管骂你。骂完还得改。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册