저희 회사는 Python 기반 웹 사이트와 Django/Celery 및 RabbitMQ를 통해 통신하는 Python 기반 작업자 노드를 가지고 있습니다. Celery 기반 작업자에게 작업을 제출해야하는 Java 기반 응용 프로그램이 있습니다. Java에서 RabbitMQ로 작업을 보낼 수는 있지만 샐러리 기반 직원은 결코 작업을 수행하지 않습니다. 두 가지 형태의 제출물에 대한 패킷 캡처를 살펴보면 차이점이 있지만, 많은 부분이 바이너리이기 때문에 어떻게 설명 할 지 짐작할 수 없기 때문에 디코딩에 대한 설명서를 찾을 수 없습니다. 여기 누구든지 Java/RabbitMQ와 Celery를 함께 사용하는 데 대한 참조 또는 경험이 있습니까?Django/Celery와의 상호 운용 Java에서
12
A
답변
12
해결책을 찾았습니다. RabbitMQ 용 Java 라이브러리는 exchange/queues/routekeys를 참조합니다. Celery에서 대기열 이름은 실제로 Java 라이브러리에서 참조되는 교환에 맵핑됩니다. 기본적으로 Celery 큐는 단순히 "셀러리"입니다.
CELERY_ROUTES = {
'mypackage.myclass.runworker' : {'queue':'myqueue'},
}
그런 다음 자바 기반의 코드는 다음과 같은 일을 할 필요가 : 장고 설정 "이 MyQueue"다음 구문을 사용하여 호출 큐를 정의하면
ConnectionFactory factory = new ConnectionFactory();
Connection connection = null ;
try {
connection = factory.newConnection(mqHost, mqPort);
} catch (IOException ioe) {
log.error("Unable to create new MQ connection from factory.", ioe) ;
}
Channel channel = null ;
try {
channel = connection.createChannel();
} catch (IOException ioe) {
log.error("Unable to create new channel for MQ connection.", ioe) ;
}
try {
channel.queueDeclare("celery", false, false, false, true, null);
} catch (IOException ioe) {
log.error("Unable to declare queue for MQ channel.", ioe) ;
}
try {
channel.exchangeDeclare("myqueue", "direct") ;
} catch (IOException ioe) {
log.error("Unable to declare exchange for MQ channel.", ioe) ;
}
try {
channel.queueBind("celery", "myqueue", "myqueue") ;
} catch (IOException ioe) {
log.error("Unable to bind queue for channel.", ioe) ;
}
// Generate the message body as a string here.
try {
channel.basicPublish(mqExchange, mqRouteKey,
new AMQP.BasicProperties("application/json", "ASCII", null, null, null, null, null, null, null, null, null, "guest", null, null),
messageBody.getBytes("ASCII"));
} catch (IOException ioe) {
log.error("IOException encountered while trying to publish task via MQ.", ioe) ;
}
그것은 그냥 밝혀 용어의 차이.
관련 문제
- 1. PERFORCE/Vault가 상호 운용 가능합니까
- 2. 수은과 서브 버전 간의 상호 운용
- 3. php와 java가 상호 운용 가능한 C# dll
- 4. WPF App - MFC App 상호 운용
- 5. WCF/WebService : 상호 운용 가능한 예외 처리
- 6. 상호 운용 가능한 웹 서비스 설계
- 7. Java에서 매개 변수 지원이 부족하더라도 Metro가 Java 웹 서비스를 WCF와 상호 운용 할 수 있습니까?
- 8. 메시지를 상호 운용 적으로 직렬화하는 가장 좋은 방법은 무엇입니까?
- 9. WCF에서 XML 데이터를 보내는 상호 운용 방법은 무엇입니까?
- 10. IDE 사이에서 Java 프로젝트를 상호 운용 할 수있는 방법
- 11. WCF에서 상호 운용 가능하지 않은 서비스를 사용하는 장점은 무엇입니까?
- 12. Firebird .NET 상호 운용성
- 13. WCF 상호 운용성 테스트
- 14. 단일 프로젝트에서 WSE 2.0 및 3.0을 어떻게 상호 운용 할 수 있습니까?
- 15. Java EE 애플리케이션 서버없이 웹 서비스를 사용하여 C#과 Java를 상호 운용 할 수 있습니까?
- 16. JSR223을 통한 Rhino와 Java의 상호 운용 : 자바 스크립트 객체 인스턴스와의 작업
- 17. 상호 운용 가능한 WCF 웹 서비스를 개발할 때 알아야 할 사항은 무엇입니까?
- 18. 상호 운용 가능한 포틀릿 또는 웹 가젯을 작성하기 위해 어떤 표준 및 모범 사례를 따라야합니까?
- 19. .NET 4.0 코드와 .NET 2.0 코드를 상호 운용 할 수 있습니까?
- 20. 상호 운용 가능한 WCF 서비스에서 SAML2.0 어설 션의 유효성을 검사하는 방법
- 21. C# : 상호 운용 가능한 웹 서비스 -이 속성에 어떤 속성을 추가해야합니까?
- 22. FDA 및 WCF 상호 운용성 증명
- 23. dr java에서 상호 작용 창을 재설정하는 방법은 무엇입니까?
- 24. Java에서 상호 교환이 가능한 기본 클래스를 다루는 방법
- 25. .NET 상호 운용성 문제
- 26. Java에서 C# 코드를 실행하십시오.
- 27. '상호 참조'DataTable의
- 28. 상호 운용성
- 29. 상호 연결은
- 30. sftp with apache vfs를 사용하여 상호 인증
팁을 주셔서 감사합니다. 예외 사용은 상당히 잘못되었습니다. – Debriter