小编Joh*_*ons的帖子

RabbitMQ用户权限格式

我正在尝试使用RabbitMQ配置用户权限rabbitmqctl.RabbitMQ文档http://www.rabbitmq.com/man/rabbitmqctl.1.man.html提供了设置配置,写入和读取权限的基本示例:

rabbitmqctl set_permissions -p /myvhost tonyg "^tonyg-.*" ".*" ".*"
Run Code Online (Sandbox Code Playgroud)

但没有提供更详细的例子.我已经看了几个关于这个主题的帖子,但没有找到我特定问题的答案.

第一个问题:是否有必要为用户可以写入的交换和队列授予权限,还是只为交换机授予权限?同样,对于阅读,是否足以指定队列?该文档仅讨论授予对"资源"的访问权限.

第二个问题:上面的示例使用插入符号来标记资源名称的开头.如果我省略这个,只使用"tonyg - .*",是否允许指定的文本出现在资源名称的任何位置?同样,如果我想指定整个资源名称,我必须用^和$括起来,如"^ myqueue $"?

第三个问题:假设我想为给定的权限指定多个模式.我可以用逗号分隔模式,例如

rabbitmqctl set_permissions -p /myvhost tonyg "^tonyg-.*,^test-.*" ".*" ".*"
Run Code Online (Sandbox Code Playgroud)

这是正确的语法吗?如果不是,那是什么?

第四个问题:vhost名称的必需语法是什么?引用的手册页中的其他示例不使用前导斜杠,如

rabbitmqctl add_vhost test
Run Code Online (Sandbox Code Playgroud)

vhost名称是以某种方式构造的,还是斜杠只是名称中的另一个字符?

谢谢你的任何建议!

amqp rabbitmq

18
推荐指数
1
解决办法
2万
查看次数

使Apache Felix Gogo无法打开本地控制台

我正在学习Apache Felix作为我的OSGi框架.我希望能够使用Felix Remote Shell通过telnet访问我正在运行的实例.远程Shell通过Gogo访问该进程,如http://felix.apache.org/site/apache-felix-remote-shell.html中所述.当我在自动部署bundles目录中使用Gogo shell软件包启动Felix时,它会g!在我启动的Linux控制台上打开Felix提示符.我想做的是让Felix从Gogo shell开始运行,但没有连接到我当前的Linux控制台并显示g!提示,并且仍然允许我通过telnet使用Remote Shell访问实例.这可能吗?如果是这样,那么正确的方法是什么?会nohup在后台运行吗?这对我来说似乎不太干净.谢谢你的任何建议!

osgi apache-felix

7
推荐指数
1
解决办法
2070
查看次数

使用PreparedStatement时使用RabbitMQ设计Java OSGi应用程序

我正在设计一个将在OSGi容器(目前为Equinox)中运行的应用程序.它将通过RabbitMQ接收消息并在内部处理它们.应用程序将作为服务器持续运行.我目前的计划是让RabbitMQ侦听器包配置其队列并将侦听器放在它们上,使用QueueingConsumer并运行在自己的线程中.侦听器将调用一个或多个处理服务来处理消息.处理器需要进行JDBC调用才能访问数据库.我希望能够控制处理器的调用顺序.如果能够灵活地在以后添加更多服务而不必重新编码RabbitMQ监听器,那将是很好的.

我面临的问题是消息可能会爆发或缓慢发生.我希望能够用来PreparedStatement加速数据库访问,但我也不想长期保持连接打开而没有任何进展.我已经考虑过DefaultConsumer直接进行子类化并让它在RabbitMQ中的线程上运行Connection,但后来我无法知道什么时候没有发生.我最初的想法是将消息处理器与OSGi服务完全分开,并且每次调用时都从池中获取数据库连接,但这会失去预处理语句的优势.我正在使用Tomcat JDBC池,它似乎没有准备好语句缓存.此外,我不确定为每次通话创建准备好的声明会有多昂贵,但这似乎很浪费.

到目前为止,我想出的最好的想法是让我的听众进行双循环处理.外部循环等待消息,然后调用内部循环建立数据库连接和预准备语句并运行,直到没有更多消息进入指定的超时,然后关闭其连接并返回到外部循环.我让这个工作进行了一点处理,但如果我有多个处理器可能有不同的预处理语句,我无法想象如何管理它.

也许我不得不放弃多种服务的想法,并将处理硬编码到我的听众中.

有什么建议?谢谢!

java osgi jdbc rabbitmq

5
推荐指数
1
解决办法
616
查看次数

OSGi捆绑包从非捆绑罐中导入包:为它们创建捆绑包?

我是OSGi的新手,我正在使用Equinox.我做了几次搜索,却找不到答案.OSGI的讨论- 处理捆绑所需的第三方JAR有所帮助,但并未完全回答我的问题.

我已经获得了一个jar文件,rabbitmq-client.jar它已经打包为OSGi包(在其MANIFEST.MF中包含Bundle-Name和其他此类属性),我想将其作为包安装.这个jar导入包org.apache.commons.ioorg.apache.commons.io.input来自commons-io-1.2.jar.RabbitMQ客户端2.7.1发行版也包括commons-cli-1.1.jar,所以我认为它也是必需的.

我检查了这些公共罐子的清单,发现它们似乎没有打包成捆.也就是说,它们的清单没有标准的捆绑属性.

我的具体问题是:如果我rabbitmq-client.jar作为一个bundle 安装,那么从commons jar导入需要访问它的软件包的正确方法是什么?我可以想到的只有三种选择,没有重建rabbitmq-client.jar.

  1. 来自commons jar的包已经包含在Equinox全局类路径中,并将rabbitmq-client.jar从那里自动获取它们.
  2. 我必须用两个公共罐子制作另一个包,导出所需的包,然后在Equinox中安装该包.
  3. 当我启动Equinox时,我必须将这两个公共罐放在全局类路径中,并且它们rabbitmq-client.jar将从那里开始.

我已经读过,通常不会在OSGi容器中使用全局类路径.在构建单个bundle类路径时,我不清楚全局类路径中的项是否可用.但是,我注意到rabbitmq-client.jar还会导入其他包,例如javax.net我认为来自全局类路径的包.或者是否有其他一些出口产品?

谢谢你的帮助!

java osgi jar

4
推荐指数
1
解决办法
2863
查看次数

我应该打开OSGi ServiceTracker,还是在使用后关闭它?

在一个OSGi ServiceTracker中使用OSGi的最佳做法是BundleActivator什么?我在Web上看到了在start方法中打开跟踪器的示例,将其存储在实例变量中,并在stop方法中关闭它,使其在捆绑的生命周期中保持打开状态.这个合适吗?我一直在编写代码,只要我需要它就打开跟踪器,获取服务并使用它,然后关闭跟踪器.当然,BundleContext如果我想在以后使用它,则需要将自身存储在实例变量中.因为我必须存储一个或另一个,所以我存储的差别可能不大.

在一个相关的问题中,如果我每次需要时都打开跟踪器,是否有必要在我使用我从中获得的服务时保持打开状态,或者我可以打开跟踪器,获取服务,关闭跟踪器,然后使用该服务?在使用该服务之前,我认为没有理由不能关闭跟踪器.

java osgi apache-felix

3
推荐指数
2
解决办法
1282
查看次数

标签 统计

osgi ×4

java ×3

apache-felix ×2

rabbitmq ×2

amqp ×1

jar ×1

jdbc ×1