【问题标题】:how can set result for counsme in rabitmq and nodejs如何在rabbitmq和node js中为消费者设置结果
【发布时间】:2022-01-12 19:51:41
【问题描述】:

我有两个服务,我用 nodejs 和 typescript 创建了它。

我想用 reabitMQ 在这两个服务之间发送和接收消息。

我用这段代码来做:

出版商:

await MessageBroker.Publish('coin', 'transaction', {
            type: MessageBrokerType.Transfer,
            to: 'to',
            amount: amount
});

消费:

MessageBroker.channel.consume(exchange + '.' + queue, async (msg: any) => {

    const { to, amount , type } = JSON.parse(msg.content);

    const transfer = await UnitOfWork.coinRepository.transfer(to, amount);
    console.log(to, amount);
})

它的工作和从发布者发送消息消费,但我有一个问题。

我需要设置消费结果并将其发送给发布者。

例如,也许我在UnitOfWork.coinRepository.transfer(to, amount); 这一行有问题,我应该向发布者发送错误消息,如果操作成功,则向订阅者发送有关成功结果的消息。

现在我该如何解决这个问题并为两个服务之间的消息设置结果?

【问题讨论】:

    标签: javascript node.js microservices


    【解决方案1】:

    到目前为止,您所做的是使用 RabbitMQ 实现 pub/sub,您需要做的是设置消息驱动架构 (RPC)。

    本文档阐明了您需要完美地为 RPC 模式做些什么:

    https://www.rabbitmq.com/tutorials/tutorial-six-javascript.html

    示例是用 Js 编写的,但您当然可以将它们更改为 Typescript。

    Message-Driven 将由correlationId 处理,用于将 RPC 响应与请求相关联,这是您需要实现的,更多信息可以在文档中找到。最后,如果您没有成功实施它,请向我索要 Typescript 的真实示例。

    【讨论】:

    • 嗨,霍辛。感谢您的回复。实际上我需要等待客户的回复。我试图点击这个链接,但它对我不起作用
    • 这可能会有所帮助:github.com/elasticio/amqp-rpc
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-01
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    相关资源
    最近更新 更多