我正在进行一些更改: https://github.com/puppetlabs/puppetlabs-rabbitmq/ 我对rspec或木偶类型/提供者没有太多帮助,所以它进展缓慢。 Haven通过他们的票务系统或Github有很多输入,所以只是想在设计变更方面得到一些建议。
基本上,该模块目前不支持使用相同的源/目标/ vhost组合进行多个绑定,但支持不同的路由密钥。
我有一个(大部分)工作修复,它向后兼容,包括使routing_key作为字符串或数组工作(https://tickets.puppetlabs.com/browse/MODULES-3679)
然而,这并没有太好用,因为现有的提供者期望资源是唯一的,并且似乎假设资源的标题与
之间存在可预测的映射。我曾想过让标题和名称属性彼此不同,甚至从必须唯一的属性中完全抽象名称/标题:
rabbitmq_binding { 'exchange1@queue1@host3-1':
name => 'exchange1@queue1@host3',
destination_type => 'queue',
routing_key => 'routingkey1',
ensure => present,
}
rabbitmq_binding { 'exchange1@queue1@host3-2':
name => 'exchange1@queue1@host3',
destination_type => 'queue',
routing_key => 'routingkey2',
ensure => present,
}
self.instances为每个vhost收集的实际rabbitmqctl输出(在一个示例中,相同的源/ dest / vhost组合有两个路由键(在此示例中没有vhost),如下所示:
foo.bar.exchange exchange axs.bar.baz.queue queue axs.bar.baz.key []
foo.bar.exchange exchange axs.bar.baz.queue queue axs.bar.baz.published.key []
我宁愿不尝试在资源的title / name属性中编码路由密钥,但是有可能将routing_key也绑定到资源(可能是通过更新exists?方法以及self .instances)?在单元测试中检查的最好的东西是什么(我已经有验收测试),如何修改lib / puppet / provider / rabbitmq_binding / rabbitmqadmin.rb来支持这个?
或者我只需要在名称中对路由键进行编码,这看起来真的很难看,并且还会使向后兼容性变得更加困难?
rabbitmq_binding {' exchange1 @ queue1 @ host3 @ routingkey':
或
rabbitmq_binding {' exchange1 @ queue1 @ /#routingkey':