2016-12-28 14 views
0

Windows에서 rabbitmq-serverstart/stop 명령을 사용할 때 RabbitMQ 내구성 큐를 통한 데이터가 삭제됩니다. RabbitMQ 서버를 시작할 때 대기열이 다시 만들어지는 것 같습니다.rabbitmq-server가 내구성 큐를 통해 데이터 손실을 시작합니다.

rabbitmqctlstop_app/start_app을 사용하면 데이터가 손실되지 않습니다. 왜?

서버가 다운 된 경우 어떻게되고 어떻게 작동합니까? 데이터가 손실된다고 어떻게 확신 할 수 있습니까? 큐 내구성 만들기

답변

0

구성 문제 : rabbitmq sbin 디렉토리에서 rabbitmq를 시작했습니다. 나는 rabbitmq를 다시 설치하고 windows 서비스에 rabbitmq를 추가했습니다. 이제 데이터 손실 문제가 내 컴퓨터에서 해결되었습니다. Windows 서비스를 시작/중지 할 때 rabbitmq이 데이터를 잃지 않습니다

0

는 충분하지 않습니다 아마 당신은 당신이 사용할 것이다 '지속'메시지

자바에서

내구성 등의 교환을 선언뿐만 아니라 보내도해야합니다 :

channel.basicPublish("", "sample_queue", 
     MessageProperties.PERSISTENT_TEXT_PLAIN, // note that this parameter is not null! 
     message.getBytes()) 

희망이 도와 드리겠습니다.

+0

나는 또한 메시지를 지속합니다. rabbitmqctl start/stop을 사용하면 '영구 메시지'가 손실되지 않습니다. 메시지를 게시 할 때 deliveryMode = 2를 사용하고 있습니다. – melihcoskun

+0

start_app/stop_app은 토끼 mq 자체 만 다시 시작한다는 것을 알고 있습니다. 모든 지속적인 것들은 mnesia라는 데이터베이스에 저장됩니다. 그것은 토끼처럼 erlang VM의 최상위에서 실행됩니다. 리눅스에서는 ps -ef | grep rabbit과 많은 프로세스가 있음을 알게 될 것입니다. 그래서 rabbitmq-server stop은 기억 상실을 포함한 모든 것을 멈추게 할 것입니다. 두 명령의 차이점이 있습니다. –

+0

감사합니다. 마비 증을 막음으로써 문제가 없어야합니다. 나는 다시 rabbitmq를 시작하기 때문에 .Mnesia는 db이며 데이터베이스를 다시 시작할 때 데이터베이스에서 데이터를 잃어 버릴 수는 없습니다. 단일 클러스터 된 단일 rabbitmq 클러스터가 내 시스템에서 작동하고 있다고 가정합니다. – melihcoskun