小编U-D*_*DON的帖子

为什么 RabbitMQ 不断从损坏的持久日志文件中中断?

我在Django应用程序中运行Celery,并使用RabbitMQ作为消息代理。然而,RabbitMQ 总是这样崩溃。首先是我从 Django 得到的错误。跟踪大多不重要,因为我知道导致错误的原因,正如您将看到的。

Traceback (most recent call last):

  ...

  File "/usr/local/lib/python2.6/dist-packages/amqplib/client_0_8/transport.py", line 85, in __init__
    raise socket.error, msg

error: [Errno 111] Connection refused
Run Code Online (Sandbox Code Playgroud)

我知道这是由于rabbit_persister.log文件损坏造成的。这是因为在我杀死与 RabbitMQ 相关的所有进程后,我运行“sudorabbitmq-server start”会出现以下崩溃:

...

starting queue recovery                                               ...done
starting persister                                                    ...BOOT ERROR: FAILED
Reason: {{badmatch,{error,{{{badmatch,eof},
                            [{rabbit_persister,internal_load_snapshot,2},
                             {rabbit_persister,init,1},
                             {gen_server,init_it,6},
                             {proc_lib,init_p_do_apply,3}]},
                           {child,undefined,rabbit_persister,
                                  {rabbit_persister,start_link,[]},
                                  transient,100,worker,
                                  [rabbit_persister]}}}},
         [{rabbit_sup,start_child,2},
          {rabbit,'-run_boot_step/1-lc$^1/1-1-',1},
          {rabbit,run_boot_step,1},
          {rabbit,'-start/2-lc$^0/1-0-',1},
          {rabbit,start,2},
          {application_master,start_it_old,4}]}
Erlang has closed
Run Code Online (Sandbox Code Playgroud)

我当前的修复:每次发生这种情况时,我都会将相应的rabbit_persister.log 文件重命名为其他名称(rabbit_persister.log.bak),并且能够成功重新启动 RabbitMQ。但问题不断出现,我也说不出原因。有任何想法吗?

另外,作为免责声明,我没有使用 Erlang 的经验;我只使用 RabbitMQ,因为它是 Celery 青睐的代理。

预先感谢,这个问题真的很烦我,因为我一遍又一遍地做同样的修复。

django rabbitmq celery django-celery

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

如何自定义基本Google Map的地点标记的行为?

我一直在使用Google Maps API,虽然我可以添加和自定义自己的标记和信息窗口,但基本地图有这些默认标记,可在单击时显示这些信息窗口(下图).

有没有办法在点击这些位置时删除此行为或实现我自己的(以使它们与我的应用程序添加的标记的行为更一致)?

例如,在点击这些标记时能够添加我自己的标记会很好.就像是:

defaultMarker.addListener("click", function () {
    myMarker = new google.maps.Marker({ ... });
});
Run Code Online (Sandbox Code Playgroud)

除了...我不知道如何获取这些默认标记.

如果之前已经回答了这个问题,或者我刚刚完全错过了一些基本的东西,那么我会道歉,但由于缺乏更好的术语,我找不到任何关于这些"默认标记"的文档.

Google地图默认标记和InfoWindow

javascript google-maps google-maps-api-3

4
推荐指数
2
解决办法
353
查看次数