私達の会社には、PythonベースのWebサイトと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のキューは単に「セロリ」です。あなたのDjangoの設定は、次の構文を使用して「MYQUEUE」と呼ばれるキューを定義する場合:
CELERY_ROUTES = {
'mypackage.myclass.runworker' : {'queue':'myqueue'},
}
そして、Javaベースのコードは次のような何かをする必要があります。
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. WCFとJavaの相互運用性
- 2. C#とCとの相互運用Javaとの相互運用:どの方が優れていますか?
- 3. GenevaベースのSTS、Java相互運用
- 4. Firebird .NETの相互運用
- 5. Hadoopの相互運用性
- 6. ダーツのタイスクリプトとの相互運用
- 7. JavaライブラリArgs4jとScala 2.10との相互運用
- 8. (オフィス相互運用機能)
- 9. Phonegap相互運用機能
- 10. Jacorb/Tao相互運用性
- 11. クロスユーザーCOM相互運用
- 12. C++ COM相互運用:C++
- 13. COM相互運用機能
- 14. は、相互運用性
- 15. C#とC++の相互運用方法
- 16. Service BrokerとWCFの相互運用性
- 17. ScalaとJythonの相互運用性
- 18. .NETとC++の相互運用性
- 19. Windows.Formsとgtk#の相互運用性?
- 20. Delphiと.NETの相互運用性
- 21. boolとC/C++の相互運用性
- 22. WebRequestクラスとWebMethodの相互運用
- 23. OpenDDSとOpenSpliceの相互運用性
- 24. JavaとPythonのXMLシリアル化ライブラリの相互運用性
- 25. JavaとC++の暗号化の相互運用性
- 26. セイロンとJavaの相互運用性: 'ceylon.language'からインポートを共有する方法
- 27. html入力タイプ=ファイルとJavaアプレットの相互運用
- 28. COM相互運用性と継承
- 29. WPF相互運用機能とダイアログ
- 30. Clojureの:Javaの相互運用IBMワトソンの会話サービス
あなたの例外の使用は非常に間違っていますが、ヒントのおかげで.. – Debriter