通过rabbitMQ的管理命令rabbitmqctl, 创建queue和exchange并绑定路由

        一般来说,exchange和queue都是由我们的业务程序在运行过程中连接到rabbitmq并创建的。然而也有些特殊的场景,要求业务程序在连接使用rabbitmq之前,相关的exchange和queue必须预先创建好。这个时候对于测试人员或者运维人员来说,通常的做法是在rabbitmq安装完成后,启用rabbitmq_management插件,然后在web控制台进行操作来创建exchange和queue,并完成绑定。

        比如canal业务需要提前获取mq的连接信息,并建立对应的exchange,否则启动会报错。

        所以我们这时候要通过脚本来完成创建exchange和queue和绑定。在参考了很多文章之后开始动手:

###在虚拟主机'/'下创建了 direct 类型的,持久化的,名为 canal_ex 的exchange,
rabbitmqctl eval 'rabbit_exchange:declare({resource, <<"/">>, exchange, <<"canal_ex">>}, direct, true, false, false, []).'
 
###创建了持久化的,名为 canal_qu 的queue,
rabbitmqctl eval 'rabbit_amqqueue:declare({resource, <<"/">>, queue, <<"canal_qu ">>}, true, false, [], none).'
 
###队列canal_qu以 canal_key 的routing key绑定到了 canal_ex 这个exchange上。其他参数为默认值.
rabbitmqctl eval 'rabbit_binding:add({binding, {resource, <<"/">>, exchange, <<"canal_ex">>}, <<"canal_key">>, {resource, <<"/">>, queue, <<"canal_qu">>}, []}).'

        以上就是创建exchange、queue并绑定的命令,是不是很很简单呢。

        新建一个脚本add_canal_exchange.bat

   

@echo off
cd /d %~dp0rabbitmq_server-3.7.11\sbin##此处是安装目录

rabbitmqctl eval "rabbit_exchange:declare({resource, <<\"/\">>, exchange, <<\"canal_exchange\">>}, direct, true, false, false, [],<<\"admin\">>)."



echo end

        双击add_canal_exchange.bat开始运行,结束后进入web控制台查看,结果没有创建对应的exchange。复制命令行进入/安装目录/sbin>,提示'此处不应有<<。',OK,我们重新编辑一下命令:

rabbitmqctl eval "rabbit_exchange:declare({resource, <<\"/\">>, exchange, <<\"canal_ex\">>}, direct, true, false, false, [])."

   结果还是不行:

Error:
{:undef, [{:rabbit_exchange, :declare, [{:resource, "/", :exchange, "test-topic"
}, :topic, true, false, false, []], []}, {:erl_eval, :do_apply, 6, [file: 'erl_e
val.erl', line: 680]}, {:rpc, :"-handle_call_call/6-fun-0-", 5, [file: 'rpc.erl'
, line: 197]}]}

 有些事情就是一看就会,一做就废。

https://github.com/rabbitmq/rabbitmq-server/issues/1852有相似的问题,那我们看看是怎么解决

 3.7.0以后需要添加参数代理用户,那我们再修改一下命令。

rabbitmqctl eval "rabbit_exchange:declare({resource, <<\"/\">>, exchange, <<\"canal_ex\">>}, direct, true, false, false, [],<<\"admin\">>)."

再次运行后成功了,控制台可以看得到我们创建的exchange了,同理创建queue和绑定也都需要添加参数。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值