RabbitMQ Windows Server R2部署问题总结(三)

打印 上一主题 下一主题

主题 649|帖子 649|积分 1962

RabbitMQ Windows Server R2部署问题总结

实行rabbitmqctl list_queues 控制台提示’SetConsoleMode’,‘虏脦脢媒麓铆脦贸隆拢\r\n’

安装部署版本为:
   rabbitMQ:rabbitmq-server-3.13.3
erlang: otp_win64_27.0
  提示以下异常堆栈信息:
  1. Microsoft Windows [版本 6.3.9600]
  2. (c) 2013 Microsoft Corporation。保留所有权利。
  3. D:\RabbitMQ Server\rabbitmq_server-3.13.3\sbin>rabbitmq-plugins list
  4. =ERROR REPORT==== 29-Jun-2024::16:44:05.141000 ===
  5. ** State machine user_drv terminating
  6. ** When server state  = {undefined,undefined}
  7. ** Reason for termination = error:{badmatch,
  8.                                    {error,
  9.                                     {'SetConsoleMode','虏脦脢媒麓铆脦贸隆拢\r\n'
  10. }}}
  11. ** Callback modules = [user_drv]
  12. ** Callback mode = state_functions
  13. ** Stacktrace =
  14. **  [{prim_tty,init,1,[{file,"prim_tty.erl"},{line,255}]},
  15.      {user_drv,init,1,[{file,"user_drv.erl"},{line,175}]},
  16.      {gen_statem,init_it,6,[{file,"gen_statem.erl"},{line,2695}]},
  17.      {proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,329}]}]
  18. =CRASH REPORT==== 29-Jun-2024::16:44:05.141000 ===
  19.   crasher:
  20.     initial call: user_drv:init/1
  21.     pid: <0.65.0>
  22.     registered_name: []
  23.     exception error: no match of right hand side value
  24.                      {error,{'SetConsoleMode','虏脦脢媒麓铆脦贸隆拢\r\n'}}
  25.       in function  prim_tty:init/1 (prim_tty.erl, line 255)
  26.       in call from user_drv:init/1 (user_drv.erl, line 175)
  27.       in call from gen_statem:init_it/6 (gen_statem.erl, line 2695)
  28.     ancestors: [<0.64.0>,kernel_sup,<0.47.0>]
  29.     message_queue_len: 0
  30.     messages: []
  31.     links: []
  32.     dictionary: []
  33.     trap_exit: true
  34.     status: running
  35.     heap_size: 610
  36.     stack_size: 29
  37.     reductions: 534
  38.   neighbours:
  39. =CRASH REPORT==== 29-Jun-2024::16:44:15.412000 ===
  40.   crasher:
  41.     initial call: supervisor_bridge:user_sup/1
  42.     pid: <0.64.0>
  43.     registered_name: []
  44.     exception exit: nouser
  45.       in function  gen_server:init_it/6 (gen_server.erl, line 2038)
  46.     ancestors: [kernel_sup,<0.47.0>]
  47.     message_queue_len: 0
  48.     messages: []
  49.     links: [<0.49.0>]
  50.     dictionary: []
  51.     trap_exit: true
  52.     status: running
  53.     heap_size: 987
  54.     stack_size: 29
  55.     reductions: 671
  56.   neighbours:
  57. =SUPERVISOR REPORT==== 29-Jun-2024::16:44:15.412000 ===
  58.     supervisor: {local,kernel_sup}
  59.     errorContext: start_error
  60.     reason: nouser
  61.     offender: [{pid,undefined},
  62.                {id,user},
  63.                {mfargs,{user_sup,start,[]}},
  64.                {restart_type,temporary},
  65.                {significant,false},
  66.                {shutdown,2000},
  67.                {child_type,supervisor}]
  68. =CRASH REPORT==== 29-Jun-2024::16:44:15.412000 ===
  69.   crasher:
  70.     initial call: application_master:init/3
  71.     pid: <0.46.0>
  72.     registered_name: []
  73.     exception exit: {{shutdown,{failed_to_start_child,user,nouser}},
  74.                      {kernel,start,[normal,[]]}}
  75.       in function  application_master:init/3 (application_master.erl, line 143)
  76.     ancestors: [application_controller,<0.10.0>]
  77.     message_queue_len: 1
  78.     messages: [{'EXIT',<0.47.0>,normal}]
  79.     links: [<0.45.0>]
  80.     dictionary: []
  81.     trap_exit: true
  82.     status: running
  83.     heap_size: 233
  84.     stack_size: 29
  85.     reductions: 63
  86.   neighbours:
复制代码
  Erlang/OTP 26 or later requires Windows 10 Threshold 2 (TH2), also known as the “November Update”, which is version 1511 and has the build number 10586. This would be the same as Windows Server 2016 I think.
Since Windows 2012 R2 is not supported by Microsoft anymore I suggest you update your OS.
If you do need to continue running 2012 you have two options:
Use an older Erlang version
Try any of the workarounds mentioned here: https://stackoverflow.com/a/44482740
  

该文提到erlang/OTP 26需要windows10以上内核。不在支持windows 2012 R2 更新了。提出的发起是更换服务器体系大概使用较为旧版的erlang版本
1、替换erlang版本
2、更新服务器体系版本
我更版本为:
   rabbitMQ: 3.10.25
erlang: 25.3.2.12
  RabbitMQ与Erlang对应版本关系图

到这里完善安装!!!
RabbitMQ服务一会主动掉线问题

   运行 rabbitmq-server start
  1. Error during startup: {error,{schema_integrity_check_failed,[{table_missing,rabbit_listener}]}}```
复制代码
原因是:原先的RabbitMq数据与新的RabbitMq有些不兼容
   解决方案:
sudo rm -rf /var/lib/rabbitmq/mnesia
win解决方案,在 RabbitMQ 安装目录中找到 mnesia 目录(通常在 C:\Users\AppData\Roaming\RabbitMQ\db),然后删除其中的文件
  

应用程序连上服务端提示 org.springframework.amqp.rabbit.listener.exception.FatalListenerStartupException: Authentication failure

原因是:应用端用guest去登录服务器是不被允许的,guest账号的策略只能在localhost本地登录不能远端登录。
   解决方案:
–创建用户
rabbitmqctl add_user youName youPassWord
–赋予权限
rabbitmqctl set_permissions -p / youName “." ".” “.*”
  应用端提示Shutdown Signal: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - unknown delivery tag 1, class-id=60, method-id=80) 问题处理

原因是:默认情况下 RabbitMQ 是主动ACK(确认签收)机制,就意味着 MQ 会在消息发送完毕后,主动帮我们去ACK(确认),如果在代码中再手动确认签收,就会造成确认错误
   解决方案
因此我们需要在消费者方法上标识,消息手动确认签收ackMode = “MANUAL”,spring-boot中 注入代码如下
  1.   @Bean
  2.     public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(ConnectionFactory connectionFactory) {
  3.         SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
  4.         factory.setConnectionFactory(connectionFactory);
  5.         factory.setAcknowledgeMode(AcknowledgeMode.MANUAL); // 设置为手动确认
  6.         factory.setPrefetchCount(1); // 设置预取数量
  7.         // 根据需要设置其他属性
  8.         return factory;
  9.     }
复制代码
Windows下运行rabbitmqctl 相关下令(如rabbitmqctl stop)报错:Error: unable to perform an operation on node解决方案


   解决方案
将C:\Users{用户名}.erlang.cookie 复制到 C:\Windows\System32\config\systemprofile目录。重启rabbitMQ服务
  添加微信,_ 随时关注新资源文章。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大连全瓷种植牙齿制作中心

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表