如何在cro中的两个路由器模块之间共享变量?

STH

我尝试使用Cro创建一个Rest API,该API将在RabbitMQ中发布消息。我想将路线分为不同的模块,并用“ include”组成。但是我也希望能够在每个模块中共享与RabbitMQ的相同连接。我尝试使用“我们的”,但它不起作用:

文件1:

unit module XXX::YYY;
use Cro::HTTP::Router;
use Cro::HTTP::Server;
use Cro::HTTP::Log::File;
use XXX::YYY::Route1;

use Net::AMQP;

our $rabbitConnection is export = Net::AMQP.new;
await $rabbitConnection.connect;

my $application = route {
        include <api v1 run> => run-routes;
}
...

档案2:

unit module XXX::YYY::Route1;
use UUID;
use Cro::HTTP::Router;
use JSON::Fast;
use Net::AMQP;
my $channel = $XXX::YYY::rabbitConnection.open-channel().result;
$channel.declare-queue("test_task", durable=> True );
sub run-routes() is export { ... }

错误信息:

===SORRY!===
No such method 'open-channel' for invocant of type 'Any'

谢谢!

科幻小说家

定义可导出路由功能时,可以指定参数,然后在编写模块中可以创建共享库并将其传递给路由。例如在您的路由器模块中:

sub run-routes ($rmq) is export{
    route {
       ... $rmq is available in here
    }
}

然后,您可以在主路由器中创建队列并在包含以下内容时将其传递

my $rmq = # Insert queue creation code here
include product => run-routes( $rmq );

我没有尝试过,但是我看不出它为什么不起作用的任何原因。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在两个或多个Servlet之间共享变量或对象?

如何在两个JVM实例之间共享内存?

如何在两个模块之间共享服务-@NgModule不在组件之间成角度?

如何在AngularJS中的两个模块之间共享数据?

如何在两个Linux内核模块之间共享全局变量?

Angular 2 Dart:如何在带有路由器和子组件的父组件之间共享变量?

如何在视图中将两个组件应用于单个路由器?

使用Angular路由器如何在多个命名出口之间共享路由

如何在函数生成的两个文件之间共享变量

如何在没有服务的情况下在两个组件之间共享共享变量

如何在两个Linux模块之间共享代码?

如何在两个X服务器之间共享剪贴板?

两个子网的两个路由器

如何在连接到路由器的两台计算机之间共享文件?

如何在两个路由器之间建立LAN到WAN的无线连接

如何在不使用Java中的全局变量的情况下在两个类之间共享变量?

使用两个路由器在内部网络中的虚拟机之间进行通信

连接两个路由器(局域网)和家庭组共享?

无法在两个tp-link路由器之间建立路由

在两个Lambda之间共享变量

如何在两个分别运行的python脚本之间共享变量

如何在服务中创建一个变量,该变量从Promise中获取其数据却又在两个组件之间共享?

如何在两个视图之间共享解析(UI路由器)

Angular 路由器延迟加载:以相同路径开头的两个不同模块

如何在两个函数之间共享公共变量

如何在reactjs路由器中的两个相似路径名之间正确路由

如何在两个角度项目之间共享代码?

如何在两个 C++ 类之间共享互斥量、条件变量和队列?

如何在具有函数的两个模块之间传递变量?