From 2a4f9f0af99e538a9df1ed300ba6d49c0d4e1fbf Mon Sep 17 00:00:00 2001 From: ziqiang <1694392889@qq.com> Date: Thu, 26 Jun 2025 08:56:06 +0800 Subject: [PATCH] feat: handle mq message --- api/core/workflow/nodes/mq/mq_node.py | 14 ++++- web/app/components/workflow/constants.ts | 2 +- .../workflow/hooks/use-checklist.ts | 6 +- .../components/workflow/nodes/constants.ts | 3 +- web/app/components/workflow/nodes/index.tsx | 2 +- web/app/components/workflow/nodes/mq/node.tsx | 58 +++++++++---------- .../components/workflow/nodes/mq/panel.tsx | 58 +++++++++++++++++++ web/app/components/workflow/nodes/mq/types.ts | 6 ++ .../workflow/nodes/mq/use-config.ts | 40 +++++++++++++ 9 files changed, 152 insertions(+), 37 deletions(-) create mode 100644 web/app/components/workflow/nodes/mq/panel.tsx create mode 100644 web/app/components/workflow/nodes/mq/types.ts create mode 100644 web/app/components/workflow/nodes/mq/use-config.ts diff --git a/api/core/workflow/nodes/mq/mq_node.py b/api/core/workflow/nodes/mq/mq_node.py index 49b9512b2b..c8f8cfcd2b 100644 --- a/api/core/workflow/nodes/mq/mq_node.py +++ b/api/core/workflow/nodes/mq/mq_node.py @@ -8,7 +8,7 @@ from core.workflow.nodes.mq.entities import MqNodeData from core.workflow.nodes.mq.rabbitmq_client import RabbitMQClient # 创建全局RabbitMQ客户端实例 -rabbitmq_client = RabbitMQClient("dify_node") +rabbitmq_client = RabbitMQClient("dify_node") class MqNode(BaseNode[MqNodeData]): _node_data_cls = MqNodeData @@ -20,8 +20,17 @@ class MqNode(BaseNode[MqNodeData]): :return: """ print("go go go execute execute execute") + print("ddd:", self.node_data) node_inputs: dict[str, list] = {"conditions": []} + newMessage = self.graph_runtime_state.variable_pool.convert_template( + self.node_data.message + ).text + newChannel = self.graph_runtime_state.variable_pool.convert_template( + self.node_data.channel + ).text + print("new message:", newMessage) + print("new newChannel:", newChannel) process_data: dict[str, list] = {"condition_results": []} input_conditions = [] @@ -30,7 +39,8 @@ class MqNode(BaseNode[MqNodeData]): try: rabbitmq_client.publish_json({ "action": "downloadImage", - "msg": '你好' + "msg": newMessage, + "channel": newChannel }) except Exception: print("err") diff --git a/web/app/components/workflow/constants.ts b/web/app/components/workflow/constants.ts index a2a6cdf83e..b6f4706385 100644 --- a/web/app/components/workflow/constants.ts +++ b/web/app/components/workflow/constants.ts @@ -361,7 +361,7 @@ export const NODES_INITIAL_DATA = { title: '', desc: '', variables: [], - ...HttpRequestDefault.defaultValue, + ...MqDefault.defaultValue, }, [BlockEnum.ParameterExtractor]: { type: BlockEnum.ParameterExtractor, diff --git a/web/app/components/workflow/hooks/use-checklist.ts b/web/app/components/workflow/hooks/use-checklist.ts index b37d3aae03..760c3cd5f9 100644 --- a/web/app/components/workflow/hooks/use-checklist.ts +++ b/web/app/components/workflow/hooks/use-checklist.ts @@ -100,9 +100,9 @@ export const useChecklist = (nodes: Node[], edges: Edge[]) => { if (node.type === CUSTOM_NODE) { const checkData = getCheckData(node.data) - console.log('node', node) - console.log('checkData', checkData) - console.log('nodesExtraData', nodesExtraData) + // console.log('node', node) + // console.log('checkData', checkData) + // console.log('nodesExtraData', nodesExtraData) const { errorMessage } = nodesExtraData[node.data.type].checkValid(checkData, t, moreDataForCheckValid) if (errorMessage || !validNodes.find(n => n.id === node.id)) { diff --git a/web/app/components/workflow/nodes/constants.ts b/web/app/components/workflow/nodes/constants.ts index aa1b972427..b9374a9d4e 100644 --- a/web/app/components/workflow/nodes/constants.ts +++ b/web/app/components/workflow/nodes/constants.ts @@ -39,6 +39,7 @@ import ListFilterPanel from './list-operator/panel' import AgentNode from './agent/node' import AgentPanel from './agent/panel' import MqNode from './mq/node' +import MqPanel from './mq/panel' import { TransferMethod } from '@/types/app' export const NodeComponentMap: Record> = { @@ -86,7 +87,7 @@ export const PanelComponentMap: Record> = { [BlockEnum.DocExtractor]: DocExtractorPanel, [BlockEnum.ListFilter]: ListFilterPanel, [BlockEnum.Agent]: AgentPanel, - [BlockEnum.MqNode]: MqNode, + [BlockEnum.MqNode]: MqPanel, } export const CUSTOM_NODE_TYPE = 'custom' diff --git a/web/app/components/workflow/nodes/index.tsx b/web/app/components/workflow/nodes/index.tsx index 5475745dbc..34dbd366c7 100644 --- a/web/app/components/workflow/nodes/index.tsx +++ b/web/app/components/workflow/nodes/index.tsx @@ -14,7 +14,7 @@ import BasePanel from './_base/panel' const CustomNode = (props: NodeProps) => { const nodeData = props.data - console.log('zzq see nodeData', props) + // console.log('zzq see nodeData', props) const NodeComponent = NodeComponentMap[nodeData.type] return ( diff --git a/web/app/components/workflow/nodes/mq/node.tsx b/web/app/components/workflow/nodes/mq/node.tsx index 0b7aa355b7..c4b67a3013 100644 --- a/web/app/components/workflow/nodes/mq/node.tsx +++ b/web/app/components/workflow/nodes/mq/node.tsx @@ -37,35 +37,35 @@ const MqNode: FC> = ({ data }) => { readOnly /> -
- -