From 5edee0ab902695bd8c66e5e9ff15d5b20633c8c0 Mon Sep 17 00:00:00 2001 From: "1378012178@qq.com" <1378012178@qq.com> Date: Fri, 9 May 2025 11:28:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=B3=BB=E7=BB=9F=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=AD=97=E5=85=B8=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mq/dict/listener/DictMQListener.java | 39 +++++++++++++++---- .../listener/DynamicQueueNameProvider.java | 26 +++++++++++++ 2 files changed, 58 insertions(+), 7 deletions(-) create mode 100644 nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/mq/dict/listener/DynamicQueueNameProvider.java diff --git a/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/mq/dict/listener/DictMQListener.java b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/mq/dict/listener/DictMQListener.java index 7844a0f..3445cfe 100644 --- a/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/mq/dict/listener/DictMQListener.java +++ b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/mq/dict/listener/DictMQListener.java @@ -39,13 +39,9 @@ public class DictMQListener { @Autowired private ISysDepartService departService; + /** - * 字典同步 - * 如果 没有字典则创建 然后把每一项字典项新增进去 - * 有字典项 则检查每一项字典项是否存在,不存在则插入 - *

- * 动态生成队列名称,避免每次部署新系统都需要改动 - * + * fanout类型 发给所有人统一处理的 * @param dto */ @RabbitListener( @@ -60,7 +56,36 @@ public class DictMQListener { ) ), errorHandler = "dictMQErrorHandler" ) - public void handleMessage(SysDictMQDto dto) { + public void handleMessage_unify(SysDictMQDto dto) { + saveDict(dto); + } + + /** + * direct直连 只发给我的 + * @param dto + */ + @RabbitListener( + bindings = @QueueBinding( + value = @Queue(name = "#{dictAsyncDQNP.getQueueName()}"), + exchange = @Exchange(name = "hldy.sysdict.direct", type = ExchangeTypes.DIRECT), + key = "#{dictAsyncDQNP.getKeyName()}" + ), + errorHandler = "dictMQErrorHandler" + ) + public void handleMessage_self(SysDictMQDto dto) { + saveDict(dto); + } + + /** + * 字典同步 + * 如果 没有字典则创建 然后把每一项字典项新增进去 + * 有字典项 则检查每一项字典项是否存在,不存在则插入 + *

+ * 动态生成队列名称,避免每次部署新系统都需要改动 + * + * @param dto + */ + private void saveDict(SysDictMQDto dto) { //查询此业务系统的机构编码、名称 String orgCode = "业务系统中未设置"; String orgName = "业务系统中未设置"; diff --git a/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/mq/dict/listener/DynamicQueueNameProvider.java b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/mq/dict/listener/DynamicQueueNameProvider.java new file mode 100644 index 0000000..b7a18af --- /dev/null +++ b/nursing-unit-system/nu-system-biz/src/main/java/org/jeecg/mq/dict/listener/DynamicQueueNameProvider.java @@ -0,0 +1,26 @@ +package org.jeecg.mq.dict.listener; + +import org.apache.commons.lang.StringUtils; +import org.jeecg.common.system.api.ISysBaseAPI; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component("dictAsyncDQNP") +public class DynamicQueueNameProvider { + + @Autowired + private ISysBaseAPI sysBaseAPI; + + public String getQueueName() { + String orgCode = sysBaseAPI.getDeptCode(); + if (StringUtils.isNotBlank(orgCode)) { + return orgCode + ".dict.async"; + } else { + return ""; + } + } + + public String getKeyName() { + return getQueueName(); + } +}