Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在应用程序中跨钩子/服务设置amqplib包装器的持久连接_Node.js_Rabbitmq_Amqp_Feathersjs - Fatal编程技术网

Node.js 如何在应用程序中跨钩子/服务设置amqplib包装器的持久连接

Node.js 如何在应用程序中跨钩子/服务设置amqplib包装器的持久连接,node.js,rabbitmq,amqp,feathersjs,Node.js,Rabbitmq,Amqp,Feathersjs,我正在用Feather编写一些微服务。对Feathers(一般来说是节点)来说非常陌生,并且遇到了一个问题 为了在微服务(即一组独立的应用程序)之间进行通信,我将使用RabbitMQ(一个AMQP消息代理)。在调用了某些服务方法之后,我想通过AMQP发布一条消息。类似地,我希望应用程序订阅代理上的交换,并在收到某条消息时调用服务方法 因为我有十几个微服务,所以我决定编写一个库来处理诸如强制主题结构和执行重新连接等事情。该库主要只是amqplib的包装器。我知道有一些开源的amqp模块在四处浮动,

我正在用Feather编写一些微服务。对Feathers(一般来说是节点)来说非常陌生,并且遇到了一个问题

为了在微服务(即一组独立的应用程序)之间进行通信,我将使用RabbitMQ(一个AMQP消息代理)。在调用了某些服务方法之后,我想通过AMQP发布一条消息。类似地,我希望应用程序订阅代理上的交换,并在收到某条消息时调用服务方法

因为我有十几个微服务,所以我决定编写一个库来处理诸如强制主题结构和执行重新连接等事情。该库主要只是amqplib的包装器。我知道有一些开源的amqp模块在四处浮动,但没有一个能完全满足我的需求

该库有connect()方法、publish()方法和subscribe()方法。connect()方法获取url,连接到代理,并将连接对象存储在模块变量中

计划将publish()方法注册为每个相关服务中的钩子。例如,如果我有一个名为foo的服务,它可能有一个foo.hooks.js:

module.exports={
之前:{
全部:[],
查找:[],
获取:[],
创建:[amqpWrapper.publish()],
更新:[amqpWrapper.publish()],
修补程序:[amqpWrapper.publish()],
删除:[amqpWrapper.publish()]
}
//等
};这就是它的用途。在
src/app.js
中:

const amqpWrapper = require('amqpWrapper')
const connection = amqpWrapper.connect();

app.set('amqp', connection);

现在,您可以访问
app
的任何地方都可以使用
app.get('amqp')
检索连接。如果是这样的话。

这很有帮助,谢谢!对我的问题进行了编辑,稍微对此进行了扩展。