Files
tk-electron-ai/main/ipc/mq.js
2025-10-28 19:40:13 +08:00

31 lines
996 B
JavaScript

// main/ipc/mq.js
const { ipcMain } = require('electron')
const mq = require('../../js/rabbitmq-service') // 复用你的文件
let currentTenantId = null
async function startConsumer(emitMessage, tenantId) {
await mq.startConsumer(
`q.tenant.${tenantId}`,
(msg) => emitMessage(msg.json ?? msg.text),
{ prefetch: 1, requeueOnError: false, durable: true, assertQueue: true }
)
}
function registerMqIpc(emitMessage) {
ipcMain.removeHandler('start-mq')
ipcMain.handle('start-mq', async (_event, tenantId, userId) => {
currentTenantId = tenantId
await startConsumer(emitMessage, tenantId)
return { ok: true }
})
ipcMain.removeHandler('mq-send')
ipcMain.handle('mq-send', async (_event, payload) => {
if (!currentTenantId) return { ok: false, error: 'tenant not set' }
await mq.publishToQueue(`q.tenant.${currentTenantId}`, payload)
return { ok: true }
})
}
module.exports = { registerMqIpc }