31 lines
996 B
JavaScript
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 }
|